PHP函数验证n级数组元素

时间:2014-06-13 12:18:35

标签: php arrays multidimensional-array

我已经尝试过google并尝试自己完成以下功能。我需要一个函数来验证每个数组元素是否是标量。所以我编写了一个简单的函数,它将迭代数组的每个元素并检查标量与否。

但真正的要求是,阵列可能是一个多维数组。所以我修改了数组并按下面的方式递归调用了函数,但它不会遍历数组中的所有元素。

function validate_scalar($params)
{
    foreach ($params as $key => $arg)
    {
        if (is_array($arg))
        {
            validate_scalar($arg);
        }
        else
        {
            if (!is_scalar($arg))
            {
                  // throwing an exception here if not scalar.
            }
        }
    }
    return true;
}

有没有方法可以实现这个功能?请帮帮我。

1 个答案:

答案 0 :(得分:1)

array_walk_recursive

您可以使用以下内容:

<?php

$array = array(
    'kalle' => 'asdf', 
    'anka' => array(
        123, 
        54324, 
        new stdClass()
    )
);

array_walk_recursive($array, function ($item, $key) {
    if (!is_scalar($item)) {
        echo $key . " =>  : Is not scalar\n";
        return false;
    }
    echo $key . " =>  : Is scalar\n";
    return true;
});

array_walk_recursive忽略数组值

输出:

kalle =>  : Is scalar
0 =>  : Is scalar
1 =>  : Is scalar
2 =>  : Is not scalar