1

ネストされた配列のキーに値が存在する限り、チェックする関数を作成するにはどうすればよいtrueですか?

例えば、

$input = array(
    "path" => null,
    "type" => array (
            "post" => null,
            "page" => null
        ),
    "title" => null, 
    "category" => array(
            "image" => "on"
     )
);

function validate_array($input = array())
{

    # Loop the array.
    foreach($input as $key => $value)
    {
        if($value && !is_array($value)) return true;

        elseif(is_array($value))
        {
            validate_array($value);
        }
        elseif($value)
        {
            return true;
        }
    }

    # Return the result.
    return false;
}

var_dump(validate_array($input)); // return bool(false)

trueネストされた配列の 1 つ (カテゴリ)にオンの値があるため、返されるはずです。

4

2 に答える 2

2
# Loop the array.
foreach($input as $key => $value)
{
    if($value && !is_array($value)) return true;

    elseif(is_array($value))
    {
        //--->change this line to this<----
        if validate_array($value) return true;
    }
    elseif($value)
    {
        return true;
    }
}

また、最後のelseifは必要ないと思います

于 2012-11-14T03:47:15.307 に答える
1

テスト済みで、動作するはずです。値が見つかった場合は true を返し、そうでない場合は false を返します。

function validate_array($input = array())
{
    # Loop the array.
    foreach($input as $key => $value) { 
        if (isset($value)) {
            if (is_array($value)) {
                if (validate_array($value)) {
                    return true;
                }
            } else {
                return true;
            }
        }
    }
    # Return the result.
    return false;
}
于 2012-11-14T04:21:09.877 に答える