Php 是否有递归遍历数组值的函数?
我有一个数组,其中可能有一些空值或空值。是否有一个PHP函数可以用来遍历这个数组,以简单地找出是否有任何值 例如:Php 是否有递归遍历数组值的函数?,php,arrays,Php,Arrays,我有一个数组,其中可能有一些空值或空值。是否有一个PHP函数可以用来遍历这个数组,以简单地找出是否有任何值 例如: [0]=> [1]=> [2]=> test 我想测试当前值的总数(如果有)。count()不起作用,因为这只是这个数组的一部分,它总是返回不准确的1 Array ( [inputbox] => Array ( [name] => Array (
[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] =>
)
)
)
数组
(
[inputbox]=>阵列
(
[名称]=>数组
(
[0]=>New Text Document.txt
)
[类型]=>数组
(
[0]=>文本/纯文本
)
[tmp_name]=>数组
(
[0]=>/var/tmp/phpLg2rFl
[1] =>
)
[错误]=>数组
(
[0] => 0
[1] =>
)
[大小]=>阵列
(
[0] => 0
[1] =>
)
)
)
我不太理解你的问题,但也许你在找
array\u filter($arr)
将返回一个已删除所有空值的数组,因此在您的情况下,只有值为test
的索引2将被保留,之后您可以使用count()
根据你的评论:
if (count(array_filter($arr)) > 0)
{
echo '$arr has values';
}
请注意,如果不为
array\u filter()
提供第二个参数,所有可以转换为false的值都将被删除,例如0
。如果只想删除空值,可以执行以下操作:
if (count(array_filter($arr, 'isset')) > 0)
{
echo '$arr has values';
}
或(我的首选版本):
您也可能对某个项目感兴趣。
根据您上次的评论,我仍然认为
array\u filter()
有效(假设$\u文件
),请尝试以下方法:
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';
}
if(计数(数组_过滤器($_文件['inputbox']['name'],'strlen'))>0)
{
回显计数($_文件['inputbox']['name'])。'FILES';
回声“
”;
回波计数(数组_过滤器($_文件['inputbox']['name'],'strlen'))。'FILES set';
}
它是平面阵列吗?或者它也可以是多维数组?如果前者:不需要递归。当你说total number present时,你是指非空值的总数、数组中的项目总数还是你遍历的项目总数?可以有多个文本框来构建此数组,如果用户从框#5而不是1开始,我必须能够测试,以便我可以显示正确的消息。谢谢Alix。它可能会工作,因为我以前没有使用过数组过滤器。我只是想知道数组中是否存在一个值。可以有多个文本框构建此数组,如果用户从框5开始而不是从1开始,我必须能够测试它。@Timay:更新了我的答案array\u filter()
应该适合你。谢谢你的帮助。。我试过了,看了一下文档,但没有得到正确的结果。即使我在文本框#9中输入一个值,计数也总是返回0。。我可能无法使用数组过滤器。我刚刚注意到这是一个多维数组。我将在上面发布结构。啊。。。实际上,strlen是这里真正的魔法,因为数组中的所有null或空白值都返回false,所以它们不包括在输出中。甜蜜的……:)
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';
}