Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 2908|Atbildi: 0

Jaunpienācēju ziņa, PHP apkopo 6 veidus, kā šķērsot masīvus

[Kopēt saiti]
Publicēts 08.06.2022 15:56:10 | | |


PHP ikdienas darbībā masīvi ir visizplatītākā struktūra, un mēs gandrīz katru dienu nodarbojamies ar masīvu saturu. Tātad jautājums ir, kā jūs šķērsojat un apstrādājat masīvus kopumā.


1、Par katru
Tas ir pazīstams, vai tas nav jūsu mīļākais?
$arr = ['a', 'b', 'c'];
foreach ($arr kā $key => $value) {
    $arr[$key] = $value . "_i";
}
print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];


2、array_map
Izmantojiet anonīmas funkcijas, lai apstrādātu katru masīva elementu. Kad šķērsošana ir pabeigta, tiek atgriezts jauns masīvs
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcija ($item) {
    atgriezties $item . "_i";
}, $arr);
print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];
Vienlaikus var strādāt ar vairākiem masīviem
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['tu', 'labs', 'ir', 'oriģināls', 'grēks'];
$arr_n = [...];
$arr = array_map(funkcija ($item_1, $item_2) {
    atgriezt $item_1 . '_' . $item_2 . "_i";
}, $arr_1, $arr_2);
print_r $arr. punkts; ['a_ tu _i', 'b_ ir good_i', 'Vai tu esi c__i', '_original _i', '_sin_i']
Jā, šķērsojumu skaits ir balstīts uz garāko masīvu.
Pēc 3 reizes šķērsošanas $arr_1 faktiski ir pabeigts, tāpēc $item_1 vērtības pēc tam ir nulles


3、array_walk
Šķērsojot masīvu kā atsauces caurlaidi, nav atgriešanās vērtības, un to var apstrādāt tikai vienu masīvu.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcija (&$item) {
    $item = $item . "_i";
});


print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];
Paziņojums &$item, jā, ir papildu &, kas nozīmē, ka jūsu parametrs saņem datus ar atsauci. Viss, kas jums jādara, ir atrast veidu, kā mainīt šo parametru.


Ja jums ir darīšana ar divdimensiju masīviem, apstrādes metode ir arī neatdalāma.
$arr = [
    ['nosaukums' => 'a'],
    ['nosaukums' => 'b'],
    ['nosaukums' => 'c']
];
array_walk($arr, funkcija (&$item) {
    $item['nosaukums'] = $item['vārds'] . "_i";
});
print_r $arr. punkts; [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4 、 par
Tam vajadzētu būt super vispārīgai sintaksei
$arr = ['a', 'b', 'c'];
par ($i = 0; $i < skaits($arr); ++$i) {
    $arr[$i] = $arr[$i] . "_i";
}
print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];
Nav ieteicams. Tas nav tik efektīvs kā foreach. Un rakstīšanas metode ir nedaudz apgrūtinoša nekā forreach.


5 、 katrs
Haha, šī funkcija ir atmesta PHP7.2 @deprecated un šķiet īpaši vecmodīga. Arī šīs rakstīšanas metodes izpildes efektivitāte nav laba, un iesācējiem vajadzētu tieši atteikties.
$arr = ['a', 'b', 'c'];
kamēr (list($key, $value) = each($arr)) {
    $arr[$key] = $value . "_i";
}
print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];


6 、 Atiestatīt
Precīzāk, tā nav tikai atiestatīšanas funkcija, bet arī vairāku iebūvētu funkciju kombinācija, kas būtībā netiek izmantota koda rakstīšanai
$arr = ['a', 'b', 'c'];
reset() rādītājs uz galvu, patiesībā noklusējums ir norādīt uz sākumu, jūs varat ignorēt šo teikumu
atiestatīt($arr);
current(), lai iegūtu pašreizējā rādītāja elementa vērtību
kamēr ($value = pašreizējais($arr)) {
    key(), lai iegūtu pašreizējā rādītāja elementa apakšrakstu
    $arr[atslēga($arr)] = $value . "_i";
    next() rādītājs uz nākamo
    nākamais ($arr);
}
print_r $arr. punkts; ['a_i', 'b_i', 'c_i'];





Iepriekšējo:[Praktiskā cīņa] ASP.NET kodolu iesaiņošana attēla NUGET taimauta jautājumā
Nākamo:Kindeditor redaktora lielapjoma augšupielādes attēlu paplašinājumi (bez Flash atkarības)
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com