我已经尝试了谷歌,并尝试自己完成以下功能。我需要一个函数来验证每个数组元素是否为标量。因此,我编写了一个简单的函数,它将迭代数组的每个元素并检查是否为标量。
但是真正的要求,数组可以是一个多维数组。所以我修改了数组,并像下面这样递归地调用函数,但是它不会遍历数组中的所有元素。
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 scalarn";
return false;
}
echo $key . " => : Is scalarn";
return true;
});
array_walk_recursive忽略数组
输出:kalle => : Is scalar
0 => : Is scalar
1 => : Is scalar
2 => : Is not scalar