Yinelemeli bir dizinin değerlerini hareket edecek bir işlevi var mı?

1 Cevap php

Ben bunu bazı boş veya boş değerlere sahip olabilen bir dizi var. Ben bir yerde değer olup olmadığını basitçe öğrenmek için bu dizi geçiş için kullanabileceğiniz bir PHP işlevi var mı?

Örneğin:

[0]=>
[1]=>
[2]=> test

Ben varsa, total number, mevcut değerlerin karşı test etmek istiyorum. bu dizinin sadece bir bölümü olduğunu ve her zaman doğru değildir ki 1 döndürür (çünkü) çalışmaz sayılır.

Array
(
    [inputbox] => Array
        (
            [name] => Array
                (
                    [0] => New Text Document.txt  <------- This is what I need to test
                    [1] => 
                )

            [type] => Array
                (
                    [0] => text/plain
                )

            [tmp_name] => Array
                (
                    [0] => /var/tmp/phpLg2rFl
                    [1] => 
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 
                )

            [size] => Array
                (
                    [0] => 0
                    [1] => 
                )
        )
)

1 Cevap

Ben çok iyi Sorunuzu anlamıyorum, ama belki de aradığınız array_filter() ?

Sizin durumunuzda değeri ile sadece indeks 2 test korunmuş olacaktır böylece array_filter($arr), çıkarılan tüm boş değerlere sahip bir dizi döndürür, sen-ebil kullanma count() sonra.


Yorumlarınız ışığında:

if (count(array_filter($arr)) > 0)
{
    echo '$arr has values';
}

Dikkat size {[(0)] false} dönüştürülebilir tüm değerler gibi 0 's olarak, çökecektir için ikinci argüman vermezseniz. Sadece boş değerleri kaldırmak isterseniz yapabilirsiniz:

if (count(array_filter($arr, 'isset')) > 0)
{
    echo '$arr has values';
}

Ya da (benim tercih edilen sürüm):

if (count(array_filter($arr, 'strlen')) > 0)
{
    echo '$arr has values';
}

You may also be interested in a Coalesce function for PHP.


Hala array_filter() çalıştığını düşünüyorum son yorumun ışığında, (varsayarak $_FILES) bu deneyin:

if (count(array_filter($_FILES['inputbox']['name'], 'strlen')) > 0)
{
    echo count($_FILES['inputbox']['name']) . ' files';
    echo '<br />';
    echo count(array_filter($_FILES['inputbox']['name'], 'strlen')) . ' files set';
}