PHP:n päivittäisessä toiminnassa taulukot ovat yleisin rakenne, ja käsittelemme taulukoihin liittyvää sisältöä lähes päivittäin. Joten kysymys kuuluu, miten taulukoita ylipäätään käytetään ja prosessoidaan.
1、foreach
Se on tuttu, eikö ole suosikkisi?
$arr = ['a', 'b', 'c'];
foreach ($arr muodossa $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Käytä anonyymejä funktioita käsittelemään jokaista taulukon alkiota. Uusi taulukko palautetaan, kun kulku on valmis
$arr = ['a', 'b', 'c'];
$arr = array_map(funktio ($item) {
palaa $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Voit työskennellä useiden taulukoiden kanssa samanaikaisesti
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['sinä', 'hyvä', 'on', 'alkuperäinen', 'synti'];
$arr_n = [...];
$arr = array_map(funktio ($item_1, $item_2) {
return $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']
Kyllä, kulkujen määrä perustuu pisimpään kaavioon.
Kolmen kierroksen jälkeen $arr_1 on oikeasti suoritettu, joten $item_1:n arvot ovat sen jälkeen nolla
3、array_walk
Taulukon läpikäyminen viitepassina ei tuota palautusarvoa ja voi käsitellä vain yhden taulukon.
$arr = ['a', 'b', 'c'];
array_walk($arr, funktio (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Huomaa &$item, kyllä, on ylimääräinen &, mikä tarkoittaa, että parametrisi vastaanottaa dataa viitteen kautta. Sinun tarvitsee vain löytää tapa muuttaa tätä parametria.
Jos käsittelet kaksiulotteisia taulukoita, käsittelytapa on myös erottamaton.
$arr = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c']
];
array_walk($arr, funktio (&$item) {
$item['nimi'] = $item['nimi'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、for
Tämän pitäisi olla todella geneerinen syntaksi
$arr = ['a', 'b', 'c'];
kun ($i = 0; $i < luku($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Ei suositella. Se ei ole yhtä tehokas kuin foreach. Ja kirjoitustapa on hieman kömpelömpi kuin Unreach.
5、kukin
Haha, tämä toiminto on hylätty PHP7.2:ssa @deprecated ja tuntuu erityisen vanhanaikaiselta. Tämän kirjoitusmenetelmän toteutustehokkuus ei myöskään ole hyvä, ja aloittelijoiden tulisi luovuttaa heti.
$arr = ['a', 'b', 'c'];
kun (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、reset
Tarkemmin sanottuna se ei ole pelkästään resetoitava funktio, vaan myös useiden sisäänrakennettujen funktioiden yhdistelmä, jota ei käytännössä käytetä koodin kirjoittamiseen
$arr = ['a', 'b', 'c'];
reset()-osoitin kohti alkua, itse asiassa oletus on osoittaa alkuun, voit jättää tämän lauseen huomiotta
reset($arr);
current() saadakseen nykyisen osoittimen alkioarvon
kun ($value = nykyinen($arr)) {
key() saadakseen nykyisen osoittimen alkioindeksin
$arr[key($arr)] = $value . '_i';
next() osoitin seuraavalle
next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|