V každodennej prevádzke PHP sú polia najbežnejšou štruktúrou a takmer každý deň sa zaoberáme obsahom súvisiacim s poľami. Otázka teda znie, ako všeobecne prechádzať a spracovávať polia.
1、pre každého
Je to známe, nie je to tvoja obľúbená?
$arr = ['a', 'b', 'c'];
foreach ($arr ako $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Použite anonymné funkcie na spracovanie každého prvku v poli. Nové pole sa vráti po dokončení prechodu
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcia ($item) {
vráť $item . '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Môžete pracovať s viacerými poliami naraz
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ty', 'dobrý', 'je', 'originál', 'sin'];
$arr_n = [...];
$arr = array_map(funkcia ($item_1, $item_2) {
vráťte $item_1 . '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ you _i', 'b_ je good_i', 'Are you c__i', '_original _i', '_sin_i']
Áno, počet prechodov je založený na najdlhšom poli.
Po troch prechodoch je $arr_1 skutočne dokončený, takže hodnoty $item_1 sú potom nulové
3、array_walk
Prechádzanie poľa ako referenčný prechod nemá návratovú hodnotu a dokáže spracovať len jedno pole.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcia (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Všimnite si &$item, áno, je tam navyše &, čo znamená, že váš parameter prijíma údaje podľa referencie. Stačí len nájsť spôsob, ako tento parameter zmeniť.
Ak pracujete s dvojrozmernými poliami, metóda spracovania je tiež neoddeliteľná.
$arr = [
['meno' => 'a'],
['meno' => 'b'],
['meno' => 'c']
];
array_walk($arr, funkcia (&$item) {
$item['meno'] = $item['meno'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];
4、pre
Toto by mala byť veľmi všeobecná syntax
$arr = ['a', 'b', 'c'];
pre ($i = 0; $i < count($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Neodporúčam. Nie je to také efektívne ako foreach. A spôsob písania je o niečo zložitejší než forreach.
5、každý
Haha, táto funkcia bola v PHP7.2 @deprecated opustená a pôsobí obzvlášť staromódne. Efektivita realizácie tejto metódy písania tiež nie je dobrá a začiatočníci by to mali okamžite vzdať.
$arr = ['a', 'b', 'c'];
zatiaľ čo (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Presnejšie povedané, nejde len o funkciu na resetovanie, ale aj o kombináciu viacerých vstavaných funkcií, ktoré sa v podstate nepoužívajú na písanie kódu
$arr = ['a', 'b', 'c'];
reset() ukazovateľ na hlavu, v skutočnosti je predvolené ukazovať na začiatok, túto vetu môžete ignorovať
reset($arr);
current() na získanie hodnoty prvku aktuálneho ukazovateľa
zatiaľ čo ($value = current($arr)) {
key() na získanie elementu dolného indexu aktuálneho ukazovateľa
$arr[key($arr)] = $value . '_i';
next() ukazovateľ na ďalší
Next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|