döngüde dizi değiştirmek

2 Cevap

İşte kod:

$arraya = array('a','b','c');
foreach($arraya as $key=>$value)
{
    if($value == 'b')
    {
        $arraya[] = 'd';
        //print_r($arraya);    //$arraya now becomes array('a','b','c','d')
    }
    echo $key.' is '.$value."\n";
}

ve alacak:

0 is a
1 is b
2 is c

Ve acaba neden 3 is d görünmüyor?

2 Cevap

Kimden PHP manual:

Not: Dizi başvurulan olmadıkça, foreach değil dizinin kendisi belirtilen dizinin bir kopyası üzerinde çalışır. foreach dizi işaretçisi üzerinde bazı yan etkileri vardır. Sıfırlayarak olmadan foreach sırasında veya sonrasında dizi işaretçisi güvenmeyin.

aşağıdaki açıklamada başka idam olmayacak, aynı nedeni ...

int a = 1;
if(a == 1){
   a = 0;
}
else{
   //print something;
}

Bu foreach yan tümcesi tarafından değerlendirilir zaman olduğu gibi foreach bir dizi ile ilgilidir.