PHP函数验证数组元素的n级


PHP function to validate array elements for n level

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

但是真正的要求,数组可以是一个多维数组。所以我修改了数组,并像下面这样递归地调用函数,但是它不会遍历数组中的所有元素。

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;
}

有什么方法可以实现这个功能吗?

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