用于验证n级数组元素的PHP函数
我已经尝试过谷歌,并尝试自己得到以下功能完成。我需要一个函数来验证每个数组元素是否为标量。因此,我编写了一个简单的函数,它将迭代数组的每个元素,并检查是否存在标量 但根据实际需求,阵列可以是多维阵列。所以我修改了数组并递归调用了函数,如下所示,但它不会遍历数组中的所有元素用于验证n级数组元素的PHP函数,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我已经尝试过谷歌,并尝试自己得到以下功能完成。我需要一个函数来验证每个数组元素是否为标量。因此,我编写了一个简单的函数,它将迭代数组的每个元素,并检查是否存在标量 但根据实际需求,阵列可以是多维阵列。所以我修改了数组并递归调用了函数,如下所示,但它不会遍历数组中的所有元素 function validate_scalar($params) { foreach ($params as $key => $arg) { if (is_array($arg))
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;
}
是否有任何方法可以实现此功能?请在这方面帮助我。
您可以使用以下内容:
<?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;
});
函数声明中缺少static,或者self::validate_标量中的self错误。谢谢。我刚刚修改了示例代码。array\u walk\u recursive递归地遍历每个不是数组的项,并对它们执行回调/函数。嗯,您能解释一下“不遍历数组的所有元素”是什么意思吗?我按原样测试了代码,它捕获了PHP不认为是标量(数组、资源、对象)的所有内容。问题是什么?当我在注释所在的位置添加一个
throw
时,您的原始代码可以工作。
kalle => : Is scalar
0 => : Is scalar
1 => : Is scalar
2 => : Is not scalar