我有一个数组,其中可能包含一些空值或空值。是否有一个 PHP 函数可用于遍历此数组以简单地找出是否有任何值?
例如:
[0]=>
[1]=>
[2]=> test
我想针对存在的值的总数 进行测试(如果有的话)。 count() 将不起作用,因为这只是此数组的一部分,并且它始终返回不准确的 1。
Array
(
[inputbox] => Array
(
[name] => Array
(
[0] => New Text Document.txt <------- This is what I need to test
[1] =>
)
[type] => Array
(
[0] => text/plain
)
[tmp_name] => Array
(
[0] => /var/tmp/phpLg2rFl
[1] =>
)
[error] => Array
(
[0] => 0
[1] =>
)
[size] => Array
(
[0] => 0
[1] =>
)
)
)
最佳答案
我不太明白你的问题,但也许你正在寻找 array_filter()
?
array_filter($arr)
将返回一个删除了所有空值的数组,因此在您的情况下,只会保留值为 test
的索引 2,您之后可以使用 count()
。
根据您的评论:
if (count(array_filter($arr)) > 0)
{
echo '$arr has values';
}
请注意,如果您不为 array_filter()
提供第二个参数,所有可以转换为 false 的值都将被丢弃,例如 0
。如果你只想删除空值,你可以这样做:
if (count(array_filter($arr, 'isset')) > 0)
{
echo '$arr has values';
}
或者(我的首选版本):
if (count(array_filter($arr, 'strlen')) > 0)
{
echo '$arr has values';
}
您可能还对 Coalesce function for PHP 感兴趣.
鉴于您最后的评论,我仍然认为 array_filter()
有效,(假设 $_FILES
)试试这个:
if (count(array_filter($_FILES['inputbox']['name'], 'strlen')) > 0)
{
echo count($_FILES['inputbox']['name']) . ' files';
echo '<br />';
echo count(array_filter($_FILES['inputbox']['name'], 'strlen')) . ' files set';
}
关于php - 是否有一个函数可以递归遍历数组的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167299/