Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 2908|Yanıt: 0

Yeni başlayanlar gönderisi, PHP dizilerde gezinmenin 6 yolunu özetliyor

[Bağlantıyı kopyala]
Yayınlandı 8.06.2022 15:56:10 | | |


PHP'nin günlük operasyonlarında dizilerle en yaygın yapı ve neredeyse her gün dizi ile ilgili içerikle uğraşıyoruz. Yani soru şu: Dizileri genel olarak nasıl hareket ettirip işliyorsunuz?


1、foreach
Tanıdık, en sevdiğin değil mi?
$arr = ['a', 'b', 'c'];
foreach ($arr olarak $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Dizinin her elemanını yönetmek için anonim fonksiyonlar kullanın. Geçiş tamamlandığında yeni bir dizi döner.
$arr = ['a', 'b', 'c'];
$arr = array_map(fonksiyon ($item) {
    geri $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Aynı anda birden fazla diziyle çalışabilirsiniz
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['sen', 'iyi', 'is', 'orijinal', 'günah'];
$arr_n = [...];
$arr = array_map(fonksiyon ($item_1, $item_2) {
    $item_1 geri dön. '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ _i', 'b_ good_i', 'Are you c__i', '_original _i', '_sin_i']
Evet, geçiş sayısı en uzun diziye göre belirlenir.
3 kez geçtikten sonra $arr_1 aslında tamamlanır, yani $item_1 değerleri bundan sonra sıfır olur


3、array_walk
Dizinizi referans geçişi olarak kullanmanın geri dönüş değeri yoktur ve sadece bir diziyi işleyebilir.
$arr = ['a', 'b', 'c'];
array_walk($arr, fonksiyon (&$item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Dikkat edin &$item, evet, ekstra bir & var, bu da parametrenizin veri aldığı anlamına gelir. Tek yapmanız gereken bu parametri değiştirmenin bir yolunu bulmak.


İki boyutlu dizilerle uğraşıyorsanız, işleme yöntemi de ayrılmazdır.
$arr = [
    ['name' => 'a'],
    ['name' => 'b'],
    ['name' => 'c']
];
array_walk($arr, fonksiyon (&$item) {
    $item['isim'] = $item['isim'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4、for
Bu çok genel bir sözdizimi olmalı
$arr = ['a', 'b', 'c'];
çünkü ($i = 0; $i < sayı($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Tavsiye edilmiyor. Foreach kadar verimli değildir. Ve yazma yöntemi Forgereach'ten biraz daha zahmetli.


Her biri 5、
Haha, bu işlev PHP7.2 @deprecated'de terk edilmiş ve özellikle eski moda hissettiriyor. Bu yazım yönteminin uygulama verimliliği de iyi değildir ve acemiler hemen vazgeçmelidir.
$arr = ['a', 'b', 'c'];
while (list($key, $value) = her bir($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、reset
Kesin olmak gerekirse, sadece sıfırlanacak bir fonksiyon değil, aynı zamanda kod yazmak için kullanılmayan birden fazla yerleşik fonksiyonun birleşimi
$arr = ['a', 'b', 'c'];
reset() işaretçisi başa doğru, aslında varsayılan olarak başlangıca işaret etmektir, bu cümleyi görmezden gelebilirsiniz
reset($arr);
current() ile mevcut işaretçinin eleman değerini elde etmek için
while ($value = akım($arr)) {
    tuş() ile mevcut işaretçinin öğe alt indeksini almak için
    $arr[key($arr)] = $value . '_i';
    next() işaretçisi bir sonraki
    next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Önceki:[Pratik Savaş] ASP.NET çekirdeklerini Bir Görüntü NUGET Zaman Aşıma Sorununa Paketleme
Önümüzdeki:Kindeditor Editörü Toplu Yükleme Resim Uzantıları (Flash Bağımlılığı Yok)
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com