V vsakodnevnem delovanju PHP-ja so polja najpogostejša struktura, skoraj vsak dan pa se ukvarjamo z vsebinami, povezanimi z polji. Torej je vprašanje, kako na splošno prehajate in obdelujete polja.
1、za vsakega
Znano je, ali ni tvoja najljubša?
$arr = ['a', 'b', 'c'];
foreach ($arr kot $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Uporabite anonimne funkcije za upravljanje vsakega elementa v polju. Nova tabela se vrne, ko je prehod končan
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcija ($item) {
vrni $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Lahko delaš z več polji hkrati
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ti', 'dobro', 'je', 'izvirno', 'greh'];
$arr_n = [...];
$arr = array_map(funkcija ($item_1, $item_2) {
vrni $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']
Da, število prehodov temelji na najdaljšem nizu.
Po treh prehodih je $arr_1 dejansko dokončan, tako da so vrednosti $item_1 po tem ničelne
3、array_walk
Prečkanje vašega polja kot referenčnega prehoda nima vrnjene vrednosti in lahko obdela le eno polje.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcija (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Notice &$item, da, obstaja dodatni &, kar pomeni, da vaš parameter prejema podatke po referenci. Vse, kar moraš storiti, je, da najdeš način, kako spremeniti ta parameter.
Če imate opravka z dvodimenzionalnimi nizi, je metoda obdelave prav tako neločljiva.
$arr = [
['ime' => 'a'],
['ime' => 'b'],
['ime' => 'c']
];
array_walk($arr, funkcija (&$item) {
$item['ime'] = $item['ime'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]];
4、za
To bi morala biti zelo generična sintaksa
$arr = ['a', 'b', 'c'];
za ($i = 0; $i < grof($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Ne priporočam. Ni tako učinkovito kot foreach. In način pisanja je nekoliko bolj zapleten kot forreach.
5、vsak
Haha, ta funkcija je bila opuščena v PHP7.2 @deprecated in se zdi še posebej staromodna. Učinkovitost izvajanja te metode pisanja prav tako ni dobra, zato bi morali začetniki takoj obupati.
$arr = ['a', 'b', 'c'];
medtem ko (list($key, $value) = vsak($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Natančneje, ni le funkcija za ponastavitev, ampak tudi kombinacija več vgrajenih funkcij, ki se v bistvu ne uporabljajo za pisanje kode
$arr = ['a', 'b', 'c'];
reset() kazalec na glavo, pravzaprav je privzeto kazati na začetek, ta stavek lahko ignorirate
reset($arr);
current(), da dobimo vrednost elementa current kazalca
medtem ko ($value = current($arr)) {
key() za pridobitev elementnega indeksa trenutnega kazalca
$arr[key($arr)] = $value . '_i';
Next() kazalec na naslednjo
next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|