Foreach döngüsü içinde diziden nesne silmek nasıl?

3 Cevap php

Ben nesneleri bir dizi yineleme ve onun 'id' mülkiyete dayanan nesnelerden birini silmek istiyorum, ama benim kod çalışmıyor.

foreach($array as $element) {
    foreach($element as $key => $value) {
        if($key == 'id' && $value == 'searched_value'){
            //delete this particular object from the $array
            unset($element);//this doesn't work
            unset($array,$element);//neither does this
        } 
    }
}

Herhangi bir öneriniz. Teşekkürler.

3 Cevap

Ben bir php programcı değilim, ama bu yineleme ise C # Bir diziyi değiştirmez söyleyebiliriz. Sen döngü sonra öğeleri silin, öğenin dizin veya kaldırmak için öğeleri tanımlamak için foreach döngüsünü kullanarak denemek isteyebilirsiniz.

Bu geçersiz UNSET için sözdizimi gibi görünüyor, ve endeksleme eksikliği ileride sorun neden olabilir. Bkz: the section on PHP arrays.

Doğru sözdizimi yukarıda gösterilmiştir. Ayrıca yeniden dizin için akılda array-values tutmak, bu yüzden hiç bir şey dizin önceden silinen yok.

Bu hile yapmak gerekir .....

reset($array);
while (list($elementKey, $element) = each($array)) {
    while (list($key, $value2) = each($element)) {
        if($key == 'id' && $value == 'searched_value') {
            unset($array[$elementKey]);
        }
    }
}