I PHP's daglige drift er arrays den mest almindelige struktur, og vi arbejder næsten dagligt med array-relateret indhold. Så spørgsmålet er, hvordan bevæger man sig gennem og behandler arrays generelt.
1、for hver
Det er velkendt, er det ikke din favorit?
$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
Brug anonyme funktioner til at håndtere hvert element i arrayet. Et nyt array returneres, når gennemgangen er fuldført
$arr = ['a', 'b', 'c'];
$arr = array_map(funktion ($item) {
Returner $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Du kan arbejde med flere arrays på samme tid
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['du', 'god', 'er', 'original', 'synd'];
$arr_n = [...];
$arr = array_map(funktion ($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, antallet af gennemgange er baseret på det længste array.
Efter at have gennemgået 3 gange er $arr_1 faktisk fuldført, så værdierne af $item_1 er derefter null
3、array_walk
At gennemgå dit array som et referencepass giver ingen returværdi og kan kun behandle ét array.
$arr = ['a', 'b', 'c'];
array_walk($arr, funktion (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Bemærk &$item, ja, der er et ekstra &, hvilket betyder, at din parameter modtager data ved reference. Alt du skal gøre er at finde en måde at ændre denne parameter på.
Hvis du arbejder med todimensionelle arrays, er behandlingsmetoden også uadskillelig.
$arr = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c']
];
array_walk($arr, funktion (&$item) {
$item['navn'] = $item['navn'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、for
Dette burde være en super generisk syntaks
$arr = ['a', 'b', 'c'];
for ($i = 0; $i < tælling($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Ikke anbefalet. Det er ikke lige så effektivt som foreach. Og skrivemetoden er en smule mere besværlig end forreach.
5、hver
Haha, denne funktion er blevet opgivet i PHP7.2 @deprecated og føles særligt gammeldags. Udførelseseffektiviteten af denne skrivemetode er heller ikke god, og nybegyndere bør opgive med det samme.
$arr = ['a', 'b', 'c'];
mens (liste($key, $value) = hver($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、nulstilling
For at være præcis er det ikke kun en funktion, der skal nulstilles, men også en kombination af flere indbyggede funktioner, som grundlæggende ikke bruges til at skrive kode
$arr = ['a', 'b', 'c'];
reset()-pegeren til hovedet, faktisk er standarden at pege på begyndelsen, du kan ignorere denne sætning
nulstilling($arr);
current() for at få elementværdien af den nuværende pointer
mens ($value = strøm($arr)) {
key() for at hente element-indekset af den aktuelle peger
$arr[key($arr)] = $value . '_i';
next()-peger til den næste
næste($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|