PHP bir diziden değerleri nasıl kaldırılır?

4 Cevap

Bir dizinin belirli bir dizi öğelerini kaldırmak için bir PHP işlevi var mı?

Örneğin, I değerleri olan bir dizi (A) ve başka bir dizi (B) sahip olan değerleri çıkarmak için bir ihtiyaç.

A diziden dizideki değerleri kaldırmak istiyorum B?

4 Cevap

Bu "remove" demek ne bağlıdır.

Sen dizi anahtarlarını kaldırmak için unset () fonksiyonunu kullanabilirsiniz, ama bu onu reindex olmaz. Eğer varsa, Yani, örneğin:

$a = array(1 => 'one', 2 => 'two', 3 => 'three');

ve sonra çağrı

unset($a[2]);

Sen gibi bir şey ile bitireceğiz

(1 => 'one', 3 => 'three');

Eğer sıralı endeksli olması dizi gerekiyorsa, sırayla endeksli tuşları ile yeni bir dizi döndürür), hangi (unsetted dizi çekmek ve array_values ​​içine besleyebilir.

Orijinal senaryoya dönersek, diğerleri gözlemlemek gibi, array_diff sizin için iş yapacak, ama bir dizin denetimi yapmaz unutmayın. Eğer, bunun yerine, array_diff_assoc kullanmanız gerekiyorsa.

array_diff fonksiyonu sizin için yapacak.

Ben bir dizi (başlık devletler) gelen tek değerini kaldırmak için bir yol arıyorsanız bu yazı accros geldi. Burada düz yol çıkarmak için değer dizide olduğunu varsayarak, bir:

$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
unset($list[array_search($toremove, $list)]);

Kaldırmak için eleman dizinin parçası değilse, bu hataları atmak olsa.

Başka bir çözüm, ama gerçekten optimize değil, performans akıllıca olur:

$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
$list = array_flip($list);
unset($list[$toremove]);
$list = array_flip($list);

Neyse, belki burada herkes tarafından önerilen array_diff kullanılarak tek bir değer içeren bir dizi oluşturarak daha hızlı ve daha verimli.