A PHP napi működésében a tömbök a leggyakoribb struktúrák, és szinte minden nap dolgozunk a tömbrel kapcsolatos tartalommal. Tehát a kérdés az, hogyan lehet általánosságban áthaladni és feldolgozni a tömböket.
1、foreach
Ismerős a kedvenced, nem a kedvenced?
$arr = ['a', 'b', 'c'];
foreach ($arr mint $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Használj anonim függvényeket a tömb minden elemének kezelésére. Új tömb érkezik, amikor a behaladás befejeződött
$arr = ['a', 'b', 'c'];
$arr = array_map(függvény ($item) {
Visszatérjen $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Egyszerre több tömbrel is dolgozhatsz
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['te', 'jó', 'van', 'eredeti', 'bűn'];
$arr_n = [...];
$arr = array_map(függvény ($item_1, $item_2) {
Return $item_1. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ te _i', 'b_ is good_i', 'Are you c__i', '_original _i', '_sin_i']
Igen, a haladások száma a leghosszabb tömbön alapul.
Háromszori áthaladás után a $arr_1 valójában teljes, így az $item_1 értékei ezután nullákat jelentenek
3、array_walk
A tömbben való hivatkozási passzként való áthaladás nem hozza vissza a visszatérési értéket, és csak egy tömböt lehet feldolgozni.
$arr = ['a', 'b', 'c'];
array_walk($arr, függvény (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Figyelj meg &$item, igen, van egy extra &, ami azt jelenti, hogy a paramétered hivatkozással fogad adatokat. Csak meg kell találnod a módot ennek a paraméternek a megváltoztatására.
Ha kétdimenziós tömbökkel dolgozol, a feldolgozási módszer is elválaszthatatlan.
$arr = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c']
];
array_walk($arr, függvény (&$item) {
$item['név'] = $item['név'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、for
Ez szuper általános szintaxis lehet
$arr = ['a', 'b', 'c'];
for ($i = 0; $i < szám($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nem ajánlott. Nem olyan hatékony, mint a foreach. Az írásmód pedig kissé nehézkesebb, mint a forreach.
5、mindegyik
Haha, ezt a funkciót a PHP7.2-ben elhagyták @deprecated, és különösen régimódinak tűnik. Ennek az írásmódnak a végrehajtási hatékonysága sem jó, és a kezdőknek azonnal fel kell adniuk.
$arr = ['a', 'b', 'c'];
míg (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Pontosan, ez nem csupán egy újraindítható függvény, hanem több beépített funkció kombinációja is, amelyet gyakorlatilag nem használnak kód írásához
$arr = ['a', 'b', 'c'];
reset() mutató a fejhez, valójában alapértelmezett a kezdetre mutatni, ezt a mondatot figyelmen kívül hagyhatod
reset($arr);
current() esetén az aktuális mutató elemértékének megszerzéséhez
míg ($value = current($arr)) {
key() a jelenlegi mutató elem indexének eléréséhez
$arr[kulcs($arr)] = $value . '_i';
next() mutató a következőre
next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|