V každodenním provozu PHP jsou pole nejběžnější strukturou a téměř každý den se setkáváme s obsahem souvisejícím s poli. Takže otázka zní, jak obecně procházíte a zpracováváte pole.
1、pro každý
Je to povědomé, není to tvoje oblíbené?
$arr = ['a', 'b', 'c'];
foreach ($arr jako $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Používejte anonymní funkce pro zpracování každého prvku v poli. Nové pole se vrátí po dokončení procházení
$arr = ['a', 'b', 'c'];
$arr = array_map(funkce ($item) {
Vraťte $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Můžete pracovat s více poli najednou
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ty', 'dobrý', 'je', 'původní', 'sin'];
$arr_n = [...];
$arr = array_map(funkce ($item_1, $item_2) {
vrať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']
Ano, počet průchodů je založen na nejdelším poli.
Po třetím projíždění je $arr_1 skutečně dokončeno, takže hodnoty $item_1 jsou pak nulové
3、array_walk
Procházení pole jako referenční průchod nemá žádnou návratovou hodnotu a může zpracovat pouze jedno pole.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkce (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Notice &$item, ano, je tam navíc &, což znamená, že váš parametr přijímá data podle odkazu. Stačí najít způsob, jak tento parametr změnit.
Pokud pracujete s dvourozměrnými poli, metoda zpracování je také neoddělitelná.
$arr = [
['jméno' => 'a'],
['name' => 'b'],
['jméno' => 'c']
];
array_walk($arr, funkce (&$item) {
$item['jméno'] = $item['jméno'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];
4、pro
Tohle by měla být velmi obecná syntaxe
$arr = ['a', 'b', 'c'];
pro ($i = 0; $i < count($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nedoporučuji. Není to tak efektivní jako foreach. A způsob psaní je trochu těžkopádnější než forreach.
5、každý
Haha, tato funkce byla opuštěna v PHP7.2 @deprecated a působí obzvlášť staromódně. Efektivita provedení této metody psaní také není dobrá a začátečníci by to měli vzdát hned.
$arr = ['a', 'b', 'c'];
zatímco (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Přesněji řečeno, nejde jen o funkci k resetování, ale také o kombinaci více vestavěných funkcí, která se v podstatě nepoužívá k psaní kódu
$arr = ['a', 'b', 'c'];
reset() ukazovat na hlavu, ve skutečnosti je výchozí ukazovat na začátek, tuto větu můžete ignorovat
reset($arr);
current() pro získání hodnoty prvku current ukazatele
zatímco ($value = current($arr)) {
key() pro získání indexu prvku aktuálního ukazatele
$arr[key($arr)] = $value . '_i';
next() ukazatel na další
next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|