Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 2908|Odgovoriti: 0

Objava novincev, PHP povzema 6 načinov za premikanje po poljih

[Kopiraj povezavo]
Objavljeno na 8. 06. 2022 15:56:10 | | |


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





Prejšnji:[Praktična bitka] Pakiranje ASP.NET jeder v sliko Težava s časovno omejitvijo NUGET
Naslednji:Kindeditor urejevalnik Razširitve za množično nalaganje slik (brez odvisnosti od Flasha)
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com