Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 2908|Antwoord: 0

Nieuwkomers post: PHP vat 6 manieren samen om arrays te doorlopen

[Link kopiëren]
Geplaatst op 08-06-2022 15:56:10 | | |


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





Vorig:[Practical Battle] Verpakken ASP.NET kernen in een Image NUGET Timeout-issue
Volgend:Kindeditor Editor Bulk upload afbeeldingsextensies (geen Flash-afhankelijkheid)
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com