[英]PHP Count values of an array
有没有一种方法可以计算多维array()的值?
$families = array
(
"Test"=>array
(
"test1",
"test2",
"test3"
)
);
因此,例如,我想对数组“ Test” ...('test1','test2','test3')中的3个值进行计数?
$families = array
(
"Test"=>array
(
"test1",
"test2",
"test3"
)
);
echo count($families["Test"]);
我想我只是想出了一种计算(无限)MD数组元素的相当不同的方法。
<?php
$array = array("ab", "cd", array("ef", "gh", array("ij")), "kl");
$i = 0;
array_walk_recursive($array, function() { global $i; return ++$i; });
echo $i;
?>
也许这不是最经济的计数方法,但似乎可行! 您可以在匿名函数内部,仅将元素添加到计数的总计中(如果它具有非空值),例如,如果您想扩展功能。 一个类似的例子可以在这里看到:
<?php
$array = array("ab", "cd", array("ef", "gh", array("ij")), "kl");
$i = 0;
array_walk_recursive($array, function($value, $key) { global $i; if ($value == 'gh') ++$i; });
echo $i;
?>
count方法必须使您到达那里。 根据您的实际问题,您可能需要编写一些(递归)循环来汇总所有项目。
静态数组:
echo 'Test has ' . count($families['test']) . ' family members';
如果您不知道数组将要存储多长时间:
foreach($families as $familyName => $familyMembers)
{
echo $familyName . ' has got ' . count($familyMembers) . ' family members.';
}
function countArrayValues($ar, $count_arrays = false) {
$cnt = 0;
foreach ($ar as $key => $val) {
if (is_array($ar[$key])) {
if ($count_arrays)
$cnt++;
$cnt += countArrayValues($ar);
}
else
$cnt++;
}
return $cnt;
}
这是我编写的自定义函数,只需传递一个数组,您将获得完整的值计数。 如果您将第二个参数传递为false或什么都不传递,则此方法将不会对数组中的元素进行计数。 如果您也想计数,请通过tru。
$count = countArrayValues($your_array);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.