我有一个数组,其中可能包含一些空值或空值。是否有一个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] =>
)
)
)
答案 0 :(得分:2)
我不太了解你的问题,但也许你正在寻找 array_filter()
?
array_filter($arr)
将返回一个删除了所有空值的数组,因此在您的情况下,只会保留值为test
的索引2,之后您可以使用count()
。< / p>
根据你的评论:
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';
}