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