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,因为嵌套数组之一 -类别-一个值

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 回答