W codziennych operacjach PHP tablice są najczęstszą strukturą, a my niemal codziennie zajmujemy się treściami związanymi z tablicami. Więc pytanie brzmi: jak ogólnie przesuwasz i przetwarzasz tablice.
1、dla każdego
Jest znajomy, prawda?
$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
Używaj anonimowych funkcji do obsługi każdego elementu w tablicy. Nowa tablica jest zwracana po zakończeniu przejścia
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcja ($item) {
Wróć $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Możesz pracować z wieloma tablicami jednocześnie
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ty', 'dobry', 'jest', 'oryginalny', 'grzech'];
$arr_n = [...];
$arr = array_map(funkcja ($item_1, $item_2) {
zwróć $item_1 . '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ you _i', 'b_ is good_i', 'Are you c__i', '_original _i', '_sin_i']
Tak, liczba przejść zależy od najdłuższej tablicy.
Po 3 przejściach $arr_1 faktycznie się kończy, więc wartości $item_1 są po tym null.
3、array_walk
Przechodzenie tablicy jako przebieg referencyjny nie ma wartości zwrotnej i może przetworzyć tylko jedną tablicę.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcja (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Uwaga &$item, tak, jest dodatkowe &, co oznacza, że twój parametr otrzymuje dane przez odwołanie. Wystarczy znaleźć sposób na zmianę tego parametru.
Jeśli masz do czynienia z dwuwymiarowymi tablicami, metoda przetwarzania jest również nierozłączna.
$arr = [
['imię' => 'a'],
['imię' => 'b'],
['imię' => 'c']
];
array_walk($arr, funkcja (&$item) {
$item['name'] = $item['name'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];
4、for
To powinna być bardzo ogólna składnia
$arr = ['a', 'b', 'c'];
dla ($i = 0; $i < hrabia($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nie polecam. Nie jest tak efektywny jak foreach. A metoda pisania jest nieco bardziej uciążliwa niż forreach.
5、każdy
Haha, ta funkcja została porzucona w PHP7.2 @deprecated i wydaje się wyjątkowo staroświecka. Efektywność wykonania tej metody pisania również nie jest dobra, a początkujący powinni od razu się poddać.
$arr = ['a', 'b', 'c'];
while (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Dokładniej, nie jest to tylko funkcja do resetowania, ale także kombinacja wielu wbudowanych funkcji, które zasadniczo nie są używane do pisania kodu
$arr = ['a', 'b', 'c'];
reset() wskazując na głowę, w rzeczywistości domyślnie wskazuje się na początek, możesz zignorować to zdanie
reset($arr);
current(), aby uzyskać wartość elementu wskaźnika current
while ($value = current($arr)) {
key(), aby uzyskać indeks elementu aktualnego wskaźnika
$arr[key($arr)] = $value . '_i';
następny() wskaźnik do następnego
next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|