Çok boyutlu bir dizi PHP (bool) true eşittir en az 1 değeri varsa nasıl kontrol

1 Cevap php

Ben çok boyutlu bir dizi var. Orada (diğer dizileri dışındaki) tek gerçek değerler sayılardır. Varsayılan olarak, hepsi 0 vardır.

Ben dizi, 0 dışında bir değere sahip olmadığını belirlemek için kolay bir yolu var olduğunu bilmek istiyorum.

Ben özyinelemeli bir şey inşa edebileceğini biliyorum, ama ben array_map() ya da benzer bir şey olabilir kaldıraç bilmek istiyorum. I array_count_values() bir iştiraki dizi ile çalışmak için alamadım.

Bu mümkün değilse, nasıl bir özyinelemeli fonksiyon tasarım istiyorsunuz?

İşte bazı test davalar

$array = array(
'test' => array(0, 0, 0, array(0, 0, 0))
)

Return false olmalıdır.

$array = array(
'test' => array(0, 0, 0, array(6, 0, 0)) // notice the 6
)

Return true olmalıdır.

Teşekkürler!

1 Cevap

Hm, ben işi yapmak için PHP'nin yerleşik işlevleri kullanmak için bir yol düşünemiyorum. Yani burada hızlı bir özyinelemeli çözüm:

function hasnonzero($array)
{
    foreach ($array as $value)
    {
        if (is_array($value))
        {
            if (hasnonzero($value))
                return true;
        }
        else if ($value != 0)
            return true;
    }

    return false;
}