php dizi filtre

5 Cevap php

Ben ve (json yem) dizi ... bu dizi değeri bir sürü içerir, ben sadece bazı gerekir, bu nedenle filtre seçeneği ...

dizi içeren diyelim (f, e = 6, d = 5, a = 2, b = 4, c = 2 = 2)

I = 2 tüm değerini kontrol etmek istiyorum, ve = 2 değil, değerini DELETE

edilen dizisi olacak (f, a = 2, c = 2 = 2)

böylece bir foreach veya while, 3 tanesi sol SADECE değerini yazdırmak!

Soru: php, bu nasıl?

Şimdiden teşekkürler

5 Cevap

Siz döngüde unset() kullanmak edebilmek için tuşların kopyaları üzerinde yineleme yapabilirsiniz:

foreach (array_keys($array) as $key) {
    if ($array[$key] != 2)  {
        unset($array[$key]);
    }
}

Diziniz büyük değerler içeriyorsa, bu yöntemin avantajı hafıza verimliliği - onlar çoğaltılamaz değildir.

EDIT Ben sadece aslında sadece (zaten değerini biliyorum) 2 değerine sahip anahtarları gerektiğini fark:

$keys = array();
foreach ($array as $key => $value) {
    if ($value == 2)  {
        $keys[] = $key;
    }
}

Bu çalışması gerekir, ama muhtemelen bir çok veri kopyalama sona kadar ne kadar etkili emin değilim.

$newArray = array_intersect_key(
                  $fullarray, 
                  array_flip(array_keys($fullarray, 2))
            );

Ben böyle bir şey yapacağım:

$newarray = array();
foreach ($jsonarray as $testelement){
    if ($testelement == 2){$newarray[]=$testelement}
}
$result = count($newarray);