Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 2908|Răspunde: 0

Postare pentru începători, PHP rezumă 6 moduri de a traversa tablourile

[Copiază linkul]
Postat pe 08.06.2022 15:56:10 | | |


În operațiunile zilnice ale PHP, array-urile sunt cea mai comună structură, iar noi gestionăm conținut legat de array-uri aproape zilnic. Așadar, întrebarea este: cum traversezi și procesezi array-urile în general.


1、pentru fiecare
E familiar, nu-i așa că e preferatul tău?
$arr = ['a', 'b', 'c'];
foreach ($arr as $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Folosește funcții anonime pentru a gestiona fiecare element din tablou. Un nou tablou este returnat când traversarea este completă
$arr = ['a', 'b', 'c'];
$arr = array_map(funcția ($item) {
    întoarce-$item . '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Poți lucra cu mai multe matrice în același timp
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['tu', 'bun', 'este', 'original', 'păcat'];
$arr_n = [...];
$arr = array_map(funcția ($item_1, $item_2) {
    returnează $item_1 . '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ _i', 'b_ este good_i', 'Ești c__i', '_original _i', '_sin_i']
Da, numărul de traversări se bazează pe cea mai lungă matrice.
După ce parcurgi de 3 ori, $arr_1 este de fapt completată, deci valorile lui $item_1 sunt nule după aceea


3、array_walk
Parcurgerea array-ului ca trecere de referință nu are valoare de returnare și poate procesa doar un singur array.
$arr = ['a', 'b', 'c'];
array_walk($arr, funcția ($item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Notice $item, da, există un extra &, ceea ce înseamnă că parametrul tău primește date prin referință. Tot ce trebuie să faci este să găsești o modalitate de a schimba acest parametru.


Dacă lucrezi cu matrice bidimensionale, metoda de procesare este de asemenea inseparabilă.
$arr = [
    ['nume' => 'a'],
    ['nume' => 'b'],
    ['nume' => 'c']
];
array_walk($arr, funcția ($item) {
    $item['nume'] = $item['nume'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4、pentru
Aceasta ar trebui să fie o sintaxă foarte generică
$arr = ['a', 'b', 'c'];
pentru ($i = 0; $i < numărătoare ($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nu este recomandat. Nu este la fel de eficient ca foreach. Și metoda de scriere este puțin mai greoaie decât cea din Forreach.


5、fiecare
Haha, această funcție a fost abandonată în PHP7.2 @deprecated și pare deosebit de demodată. Eficiența de execuție a acestei metode de scriere nu este, de asemenea, bună, iar începătorii ar trebui să renunțe imediat.
$arr = ['a', 'b', 'c'];
while (list($key, $value) = each($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、reset
Mai exact, nu este doar o funcție de resetare, ci și o combinație de mai multe funcții încorporate, care practic nu este folosită pentru a scrie cod
$arr = ['a', 'b', 'c'];
reset() pointer către cap, de fapt, implicit este să indici spre început, poți ignora această propoziție
resetare ($arr);
curent() pentru a obține valoarea elementului pointerului curent
în timp ce ($value = curent($arr)) {
    key() pentru a obține subscriptul elementului al pointerului curent
    $arr[cheie($arr)] = $value . '_i';
    next() indică către următorul
    următorul ($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Precedent:[Bătălie Practică] Ambalarea nucleelor ASP.NET într-o imagine NUGET Problemă de timeout
Următor:Kindeditor Editor Extensii de imagine pentru încărcare în masă (fără dependență de flash)
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com