Php bir diziden bir (tam) öğesi silme

4 Cevap php

Örneğin ben böyle bir dizi var:

  $test= array("0" => "412", "1" => "2"); 

Ben elemanı silmek istiyorsanız onun = 2

 $delete=2;
 for($j=0;$j<$dbj;$j++) {
     if (in_array($delete, $test)) {    
         unset($test[$j]);
     }
 }
 print_r($test);

But with this, unfortunatelly the array will empty...
How can i delete an exact element from the array?
Thank you

4 Cevap

$ Silmek dizide var çünkü döngü içinde size test şartı koşuyoruz doğrudur. Yani her tekrarında onun $delete artık $test bulunmaktadır kadar geçerli öğeyi silme. Bunun yerine bu deneyin. Bu ve eleman eşitse $delete bunu kaldırır ($delete elemanların sayısı $dbj varsayarak) dizisinin elemanları ile çalışır.

$delete=2;
for($j=0;$j<$dbj;$j++) {
    if ($test[$j]==$delete)) {  
        unset($test[$j]);
    }
}
print_r($test);

Eğer tam olarak ne demek?

Ben ike $ anahtar tuşu ile eleman silmek için olacaktır:

unset($array[$key]);

Belirtilen değer değilse:

$key = array_search($value, $array);
unset($array[$key]);

Denemek

if( $test[$j] == $delete )
    unset( $test[$j] );

Ne geçerli kod yok her zaman silmek $ için tüm dizi ve unset anda iterated değerini aramasıdır. Sen diziden çıkarmadan önce $ silme ile eşitliği anda iterated değerini test etmek gerekir.

Bir diziden belirli bir öğeyi silmek için, array_search ve array_splice bir arada kullanmak

$a = array('foo', 'bar', 'baz', 'quux');
array_splice($a, array_search('bar', $a), 1);
echo implode(' ', $a); // foo baz quux