Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 2908|Odpověď: 0

Nováčkovský příspěvek, PHP shrnuje 6 způsobů, jak procházet pole

[Kopírovat odkaz]
Zveřejněno 08.06.2022 15:56:10 | | |


V každodenním provozu PHP jsou pole nejběžnější strukturou a téměř každý den se setkáváme s obsahem souvisejícím s poli. Takže otázka zní, jak obecně procházíte a zpracováváte pole.


1、pro každý
Je to povědomé, není to tvoje oblíbené?
$arr = ['a', 'b', 'c'];
foreach ($arr jako $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Používejte anonymní funkce pro zpracování každého prvku v poli. Nové pole se vrátí po dokončení procházení
$arr = ['a', 'b', 'c'];
$arr = array_map(funkce ($item) {
    Vraťte $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Můžete pracovat s více poli najednou
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ty', 'dobrý', 'je', 'původní', 'sin'];
$arr_n = [...];
$arr = array_map(funkce ($item_1, $item_2) {
    vrať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']
Ano, počet průchodů je založen na nejdelším poli.
Po třetím projíždění je $arr_1 skutečně dokončeno, takže hodnoty $item_1 jsou pak nulové


3、array_walk
Procházení pole jako referenční průchod nemá žádnou návratovou hodnotu a může zpracovat pouze jedno pole.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkce (&$item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Notice &$item, ano, je tam navíc &, což znamená, že váš parametr přijímá data podle odkazu. Stačí najít způsob, jak tento parametr změnit.


Pokud pracujete s dvourozměrnými poli, metoda zpracování je také neoddělitelná.
$arr = [
    ['jméno' => 'a'],
    ['name' => 'b'],
    ['jméno' => 'c']
];
array_walk($arr, funkce (&$item) {
    $item['jméno'] = $item['jméno'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];


4、pro
Tohle by měla být velmi obecná syntaxe
$arr = ['a', 'b', 'c'];
pro ($i = 0; $i < count($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nedoporučuji. Není to tak efektivní jako foreach. A způsob psaní je trochu těžkopádnější než forreach.


5、každý
Haha, tato funkce byla opuštěna v PHP7.2 @deprecated a působí obzvlášť staromódně. Efektivita provedení této metody psaní také není dobrá a začátečníci by to měli vzdát hned.
$arr = ['a', 'b', 'c'];
zatímco (list($key, $value) = each($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、reset
Přesněji řečeno, nejde jen o funkci k resetování, ale také o kombinaci více vestavěných funkcí, která se v podstatě nepoužívá k psaní kódu
$arr = ['a', 'b', 'c'];
reset() ukazovat na hlavu, ve skutečnosti je výchozí ukazovat na začátek, tuto větu můžete ignorovat
reset($arr);
current() pro získání hodnoty prvku current ukazatele
zatímco ($value = current($arr)) {
    key() pro získání indexu prvku aktuálního ukazatele
    $arr[key($arr)] = $value . '_i';
    next() ukazatel na další
    next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Předchozí:[Praktický boj] Balení ASP.NET jader do image NUGET Timeout Issue
Další:Kindeditor Editor Hromadné nahrávání obrazových rozšíření (bez závislosti na Flashi)
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com