Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 2908|Svare: 0

Innlegg for nykommere, PHP oppsummerer 6 måter å gå gjennom arrays på

[Kopier lenke]
Publisert på 08.06.2022 15:56:10 | | |


I PHPs daglige drift er arrays den vanligste strukturen, og vi håndterer array-relatert innhold nesten hver dag. Så spørsmålet er, hvordan navigerer og prosesserer du matriser generelt.


1、for hver
Det er kjent, er det ikke favoritten din?
$arr = ['a', 'b', 'c'];
foreach ($arr som $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Bruk anonyme funksjoner for å håndtere hvert element i arrayet. Et nytt array returneres når traverseringen er fullført
$arr = ['a', 'b', 'c'];
$arr = array_map(funksjon ($item) {
    Returner $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Du kan jobbe med flere arrays samtidig
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['du', 'god', 'er', 'original', 'synd'];
$arr_n = [...];
$arr = array_map(funksjon ($item_1, $item_2) {
    returner $item_1. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ du _i', 'b_ er good_i', 'Er du c__i', '_original _i', '_sin_i']
Ja, antall traversaler er basert på det lengste arrayet.
Etter å ha gått gjennom 3 ganger, er $arr_1 faktisk fullført, så verdiene til $item_1 er nulle etter det


3、array_walk
Å traversere arrayet ditt som et referansepass har ingen returverdi og kan bare behandle ett array.
$arr = ['a', 'b', 'c'];
array_walk($arr, funksjon (&$item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Legg merke til &$item, ja, det finnes en ekstra &, som betyr at parameteren din mottar data ved referanse. Alt du trenger å gjøre er å finne en måte å endre denne parameteren på.


Hvis du har med todimensjonale matriser å gjøre, er prosesseringsmetoden også uatskillelig.
$arr = [
    ['name' => 'a'],
    ['navn' => 'b'],
    ['name' => 'c']
];
array_walk($arr, funksjon (&$item) {
    $item['navn'] = $item['navn'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4、for
Dette burde være supergenerisk syntaks
$arr = ['a', 'b', 'c'];
for ($i = 0; $i < telling($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Anbefales ikke. Det er ikke like effektivt som Foreach. Og skrivemetoden er litt mer tungvint enn forreach.


5、 hver
Haha, denne funksjonen har blitt forlatt i PHP7.2 @deprecated og føles spesielt gammeldags. Utførelseseffektiviteten til denne skrivemetoden er heller ikke god, og nybegynnere bør gi opp direkte.
$arr = ['a', 'b', 'c'];
mens (list($key, $value) = hver($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、Reset
For å være presis er det ikke bare en funksjon som skal tilbakestilles, men også en kombinasjon av flere innebygde funksjoner, som i praksis ikke brukes til å skrive kode
$arr = ['a', 'b', 'c'];
reset()-pekeren til hodet, faktisk er standarden å peke på begynnelsen, du kan ignorere denne setningen
reset($arr);
current() for å hente elementverdien til den nåværende pekeren
mens ($value = strøm($arr)) {
    key() for å hente elementets indeks til den nåværende pekeren
    $arr[nøkkel($arr)] = $value . '_i';
    Next()-peker til neste
    neste($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Foregående:[Praktisk kamp] Pakker ASP.NET kjerner inn i et Image NUGET Timeout-problem
Neste:Kindeditor Editor Masseopplasting av bildeutvidelser (ingen Flash-avhengighet)
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com