Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 2908|Svar: 0

Nybörjarinlägg, PHP sammanfattar 6 sätt att navigera i arrayer

[Kopiera länk]
Publicerad på 2022-06-08 15:56:10 | | |


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





Föregående:[Praktisk strid] Paketering ASP.NET kärnor i ett Image NUGET Timeout-problem
Nästa:Kindeditor Editor Bulkuppladdning av bildtillägg (ingen Flash-beroende)
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com