Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 2908|Vastaus: 0

Aloittelijoiden postaus, PHP tiivistää 6 tapaa kulkea taulukoissa

[Kopioi linkki]
Julkaistu 8.6.2022 15.56.10 | | |


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'];





Edellinen:[Käytännön taistelu] ASP.NET ytimien pakkaaminen Image NUGET -aikalisäongelmaksi
Seuraava:Kindeditor-editorin massalatauskuvalaajennukset (ei flash-riippuvuutta)
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com