I PHP:s dagliga verksamhet är arrays den vanligaste strukturen, och vi hanterar array-relaterat innehåll nästan varje dag. Så frågan är, hur rör man sig igenom och bearbetar arrayer i allmänhet.
1、för varje
Det är bekant, eller hur?
$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
Använd anonyma funktioner för att hantera varje element i matrisen. En ny array returneras när traverseringen är klar
$arr = ['a', 'b', 'c'];
$arr = array_map(funktion ($item) {
Återvänd $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Du kan arbeta med flera arrayer samtidigt
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['du', 'bra', 'är', 'ursprunglig', 'synd'];
$arr_n = [...];
$arr = array_map(funktion ($item_1, $item_2) {
returnera $item_1. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ du _i', 'b_ är good_i', 'Är du c__i', '_original _i', '_sin_i']
Ja, antalet traversaler baseras på den längsta arrayen.
Efter att ha gått igenom tre gånger är $arr_1 faktiskt slutförd, så värdena på $item_1 är nulla efter det
3、array_walk
Att traversera din array som en referenspassning har inget returvärde och kan bara bearbeta en array.
$arr = ['a', 'b', 'c'];
array_walk($arr, funktion (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Observera &$item, ja, det finns ett extra &, vilket betyder att din parameter tar emot data genom referens. Allt du behöver göra är att hitta ett sätt att ändra denna parameter.
Om du har att göra med tvådimensionella arrayer är bearbetningsmetoden också oskiljaktig.
$arr = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c']
];
array_walk($arr, funktion (&$item) {
$item['namn'] = $item['namn'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、för
Detta borde vara supergenerisk syntax
$arr = ['a', 'b', 'c'];
för ($i = 0; $i < räkning($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Rekommenderas inte. Det är inte lika effektivt som foreach. Och skrivmetoden är något mer omständlig än förreach.
5 vardera
Haha, den här funktionen har övergivits i 7.2 PHP @deprecated och känns särskilt gammaldags. Exekveringseffektiviteten för denna skrivmetod är inte heller bra, och nybörjare bör ge upp direkt.
$arr = ['a', 'b', 'c'];
medan (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、återställ
För att vara exakt är det inte bara en funktion att återställa, utan också en kombination av flera inbyggda funktioner, vilket i princip inte används för att skriva kod
$arr = ['a', 'b', 'c'];
reset()-pekaren mot huvudet, faktiskt är standarden att peka på början, du kan ignorera denna mening
reset($arr);
current() för att få elementvärdet för den aktuella pekaren
medan ($value = ström($arr)) {
key() för att hämta elementets index av den aktuella pekaren
$arr[key($arr)] = $value . '_i';
next()-pekare till nästa
nästa($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|