我已经尝试过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;
}
有没有方法可以实现这个功能?请帮帮我。
答案 0 :(得分:1)
您可以使用以下内容:
<?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