foreach döngüsü içindeki ilk dizisini değiştirmek?

4 Cevap

i ilk dizi döngü içinde değişti bir foreach döngü var istiyorum.

örn.

$array = array('red', 'blue');
foreach($array as $key => $value) {
    $array[] = 'white';
    echo $value . '<br />';
}

i döngü içinde başka bir öğe eklemek rağmen bu döngü içinde döngü kırmızı ve mavi yazdıracaktır.

böylece yeni unsurlar ilave edilecek ve foreach değişti ne olursa olsun yeni bir dizi kullanmak olacaktır döngü içinde ilk dizisini değiştirmek için herhangi bir yolu var mı?

i belirli bir görev için mantık bu tür gerekir:

i bir bağlantı için arama bir eğer bildirimde olacaktır. bu bağlantı varsa, bu dizi eklenir. bağlantı içerik başka bir bağlantı varsa incelenecek getirilecek. eğer öyleyse, bu bir bağlantı eklenir ve içerik herhangi bir bağlantı daha kurdu zaman .., foreach döngüsü çıkacak benzeri böylece, getirilen olacak

4 Cevap

Yapmanız gereken for döngüsü içinde atama taşımak ve dizinin uzunluğunu her tekrarında kontrol etmektir.

$array = array('red', 'blue');
for($i = 0; $i < count($array); $i++)
{
   $value = $array[$i];
   array_push($array, 'white');
   echo $value . '<br />';
}

Dikkatli olun, bu sonsuz bir döngü (beyaz her döngü de dizinin sonuna eklenecektir) neden olacaktır.

Belki gibi, başka bir şekilde kullanmanız gerekir:

$ar = array('blue', 'red');
while ($a = array_pop($ar) {
     array_push($ar, 'white');
}

Ya da bunun gibi bir şey ...

Sen $ tuşunu kullanarak dizi erişebilirsiniz

$array = array('red', 'blue');
foreach($array as $key => $value) {
    $array[$key] = 'white';
}