Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 2908|Odpowiedź: 0

Post nowicjuszy, PHP podsumowuje 6 sposobów przemieszczania się po tablicach

[Skopiuj link]
Opublikowano 08.06.2022 15:56:10 | | |


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'];





Poprzedni:[Praktyczna walka] Pakowanie rdzeni ASP.NET w obraz Problem z limitem czasu NUGET
Następny:Edytor Kindeditora – rozszerzenia do masowego przesyłania obrazów (bez zależności od Flash)
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com