Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 2908|Odpoveď: 0

Príspevok nováčikov, PHP zhrňuje 6 spôsobov, ako prechádzať polia

[Kopírovať odkaz]
Zverejnené 8. 6. 2022 15:56:10 | | |


V každodennej prevádzke PHP sú polia najbežnejšou štruktúrou a takmer každý deň sa zaoberáme obsahom súvisiacim s poľami. Otázka teda znie, ako všeobecne prechádzať a spracovávať polia.


1、pre každého
Je to známe, nie je to tvoja obľúbená?
$arr = ['a', 'b', 'c'];
foreach ($arr ako $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Použite anonymné funkcie na spracovanie každého prvku v poli. Nové pole sa vráti po dokončení prechodu
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcia ($item) {
    vráť $item . '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Môžete pracovať s viacerými poliami naraz
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ty', 'dobrý', 'je', 'originál', 'sin'];
$arr_n = [...];
$arr = array_map(funkcia ($item_1, $item_2) {
    vráťte $item_1 . '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ you _i', 'b_ je good_i', 'Are you c__i', '_original _i', '_sin_i']
Áno, počet prechodov je založený na najdlhšom poli.
Po troch prechodoch je $arr_1 skutočne dokončený, takže hodnoty $item_1 sú potom nulové


3、array_walk
Prechádzanie poľa ako referenčný prechod nemá návratovú hodnotu a dokáže spracovať len jedno pole.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcia (&$item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Všimnite si &$item, áno, je tam navyše &, čo znamená, že váš parameter prijíma údaje podľa referencie. Stačí len nájsť spôsob, ako tento parameter zmeniť.


Ak pracujete s dvojrozmernými poliami, metóda spracovania je tiež neoddeliteľná.
$arr = [
    ['meno' => 'a'],
    ['meno' => 'b'],
    ['meno' => 'c']
];
array_walk($arr, funkcia (&$item) {
    $item['meno'] = $item['meno'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];


4、pre
Toto by mala byť veľmi všeobecná syntax
$arr = ['a', 'b', 'c'];
pre ($i = 0; $i < count($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Neodporúčam. Nie je to také efektívne ako foreach. A spôsob písania je o niečo zložitejší než forreach.


5、každý
Haha, táto funkcia bola v PHP7.2 @deprecated opustená a pôsobí obzvlášť staromódne. Efektivita realizácie tejto metódy písania tiež nie je dobrá a začiatočníci by to mali okamžite vzdať.
$arr = ['a', 'b', 'c'];
zatiaľ čo (list($key, $value) = each($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、reset
Presnejšie povedané, nejde len o funkciu na resetovanie, ale aj o kombináciu viacerých vstavaných funkcií, ktoré sa v podstate nepoužívajú na písanie kódu
$arr = ['a', 'b', 'c'];
reset() ukazovateľ na hlavu, v skutočnosti je predvolené ukazovať na začiatok, túto vetu môžete ignorovať
reset($arr);
current() na získanie hodnoty prvku aktuálneho ukazovateľa
zatiaľ čo ($value = current($arr)) {
    key() na získanie elementu dolného indexu aktuálneho ukazovateľa
    $arr[key($arr)] = $value . '_i';
    next() ukazovateľ na ďalší
    Next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Predchádzajúci:[Praktický boj] Balenie ASP.NET jadier do obrazu Problém s časovým limitom NUGET
Budúci:Rozšírenia obrázkov na hromadné nahrávanie Kindeditoru (bez závislosti na Flashi)
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com