In de dagelijkse werkzaamheden van PHP zijn arrays de meest voorkomende structuur, en we werken bijna dagelijks met array-gerelateerde content. Dus de vraag is: hoe doorkruis en verwerk je arrays in het algemeen.
1、voor elke
Het is vertrouwd, is het niet je favoriet?
$arr = ['a', 'b', 'c'];
foreach ($arr als $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Gebruik anonieme functies om elk element in de array te behandelen. Een nieuwe array wordt teruggegeven wanneer de doorloop is voltooid
$arr = ['a', 'b', 'c'];
$arr = array_map(functie ($item) {
Ga terug $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Je kunt met meerdere arrays tegelijk werken
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['jij', 'goed', 'is', 'origineel', 'zondig'];
$arr_n = [...];
$arr = array_map(functie ($item_1, $item_2) {
Keer terug $item_1. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ je _i', 'b_ is good_i', 'Ben je c__i', '_original _i', '_sin_i']
Ja, het aantal doorlopen is gebaseerd op de langste array.
Na drie keer doorlopen is $arr_1 daadwerkelijk voltooid, dus de waarden van $item_1 zijn daarna nul
3、array_walk
Het doorlopen van je array als referentiepass heeft geen retourwaarde en kan slechts één array verwerken.
$arr = ['a', 'b', 'c'];
array_walk($arr, functie (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Let op &$item, ja, er is een extra &, wat betekent dat je parameter gegevens ontvangt via referentie. Je hoeft alleen maar een manier te vinden om deze parameter te veranderen.
Als je met tweedimensionale arrays werkt, is de verwerkingsmethode ook onlosmakelijk.
$arr = [
['naam' => 'a'],
['naam' => 'b'],
['name' => 'c']
];
array_walk($arr, functie (&$item) {
$item['naam'] = $item['naam'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、voor
Dit zou een super generieke syntaxis moeten zijn
$arr = ['a', 'b', 'c'];
voor ($i = 0; $i < telling($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Niet aan te raden. Het is niet zo efficiënt als Foreach. En de schrijfmethode is iets omslachtiger dan forreach.
5 % per stuk
Haha, deze functie is in PHP7.2 @deprecated verlaten en voelt bijzonder ouderwets aan. De uitvoeringsefficiëntie van deze schrijfmethode is ook niet goed, en beginners moeten direct opgeven.
$arr = ['a', 'b', 'c'];
terwijl (list($key, $value) = elk($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Om precies te zijn, het is niet alleen een functie om te resetten, maar ook een combinatie van meerdere ingebouwde functies, wat eigenlijk niet wordt gebruikt om code te schrijven
$arr = ['a', 'b', 'c'];
reset()-pointer naar het hoofd, in feite is de standaard om naar het begin te wijzen, je kunt deze zin negeren
reset($arr);
current() om de elementwaarde van de stroompointer te krijgen
terwijl ($value = stroom($arr)) {
key() om het elementsubscript van de huidige pointer te krijgen
$arr[key($arr)] = $value . '_i';
next()-verwijzing naar de volgende
volgende($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|