Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 2908|Svar: 0

Indlæg for nytilkomne, PHP opsummerer 6 måder at gennemgå arrays på

[Kopier link]
Opslået på 08/06/2022 15.56.10 | | |


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





Tidligere:[Practical Battle] Pakning ASP.NET kerner i et Image NUGET Timeout-problem
Næste:Kindeditor Editor Bulk upload billedudvidelser (ingen Flash-afhængighed)
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com