Kasdienėje PHP veikloje masyvai yra labiausiai paplitusi struktūra, o su masyvu susijusį turinį susiduriame beveik kiekvieną dieną. Taigi kyla klausimas, kaip apskritai pereiti ir apdoroti masyvus.
1 、 kiekvienam
Tai pažįstama, ar ne jūsų mėgstamiausia?
$arr = ['a', 'b', 'c'];
foreach ($arr kaip $key => $value) {
$arr[$key] = $value . "_i";
}
print_r ($arr); ['a_i', 'b_i', 'c_i'];
2 、 array_map
Naudokite anonimines funkcijas kiekvienam masyvo elementui tvarkyti. Naujas masyvas grąžinamas, kai perėjimas baigtas
$arr = ['a', 'b', 'c'];
$arr = array_map(funkcija ($item) {
grąžinti $item . "_i";
}, $arr);
print_r ($arr); ['a_i', 'b_i', 'c_i'];
Vienu metu galite dirbti su keliais masyvais
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['tu', 'geras', 'yra', 'originalus', 'nuodėmė'];
$arr_n = [...];
$arr = array_map(funkcija ($item_1, $item_2) {
grąžinti $item_1 . '_' . $item_2 . "_i";
}, $arr_1, $arr_2);
print_r ($arr); ['a_ you _i', 'b_ is good_i', 'Are you c__i', '_original _i', '_sin_i']
Taip, perėjimų skaičius priklauso nuo ilgiausio masyvo.
Pervažiavus 3 kartus, $arr_1 iš tikrųjų baigiamas, todėl $item_1 reikšmės po to yra neapibrėžtos
3、array_walk
Perėjimas per savo masyvą kaip atskaitos leidimas neturi grąžinamos vertės ir gali apdoroti tik vieną masyvą.
$arr = ['a', 'b', 'c'];
array_walk($arr, funkcija (&$item) {
$item = $item . "_i";
});
print_r ($arr); ['a_i', 'b_i', 'c_i'];
Atkreipkite dėmesį &$item, taip, yra papildomas &, o tai reiškia, kad jūsų parametras gauna duomenis pagal nuorodą. Viskas, ką jums reikia padaryti, tai rasti būdą, kaip pakeisti šį parametrą.
Jei susiduriate su dvimačiais masyvais, apdorojimo būdas taip pat yra neatsiejamas.
$arr = [
['vardas' => 'a'],
['vardas' => 'b'],
['vardas' => 'c']
];
array_walk($arr, funkcija (&$item) {
$item['vardas'] = $item['vardas'] . "_i";
});
print_r ($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4 、 už
Tai turėtų būti super bendra sintaksė
$arr = ['a', 'b', 'c'];
už ($i = 0; $i < skaičius ($arr); ++$i) {
$arr[$i] = $arr[$i] . "_i";
}
print_r ($arr); ['a_i', 'b_i', 'c_i'];
Nerekomenduojama. Jis nėra toks efektyvus kaip foreach. O rašymo būdas yra šiek tiek sudėtingesnis nei pamiršti.
5 、 kiekvienas
Haha, ši funkcija buvo atsisakyta PHP7.2 @deprecated ir jaučiasi ypač senamadiškas. Šio rašymo metodo vykdymo efektyvumas taip pat nėra geras, o naujokai turėtų atsisakyti tiesiogiai.
$arr = ['a', 'b', 'c'];
o (sąrašas($key, $value) = kiekvienas($arr)) {
$arr[$key] = $value . "_i";
}
print_r ($arr); ['a_i', 'b_i', 'c_i'];
6 、 Atstatyti
Tiksliau sakant, tai ne tik funkcija, kurią reikia nustatyti iš naujo, bet ir kelių integruotų funkcijų derinys, kuris iš esmės nenaudojamas kodui rašyti
$arr = ['a', 'b', 'c'];
reset() rodyklę į galvą, tiesą sakant, numatytasis yra nurodyti pradžią, galite nepaisyti šio sakinio
atstatyti ($arr);
current(), kad gautumėte dabartinio žymeklio elemento reikšmę
o ($value = srovė($arr)) {
key(), kad gautumėte dabartinio žymeklio elemento apatinį indeksą
$arr[raktas($arr)] = $value . "_i";
next() žymeklis į kitą
kitas ($arr);
}
print_r ($arr); ['a_i', 'b_i', 'c_i'];
|