有没有一种方法来计算多维数组()的值?PHP数组数值
$families = array
(
"Test"=>array
(
"test1",
"test2",
"test3"
)
);
因此,举例来说,我愿意阵列 “测试” 内部算上3个值...( 'TEST1', 'test2的', 'TEST3')?
有没有一种方法来计算多维数组()的值?PHP数组数值
$families = array
(
"Test"=>array
(
"test1",
"test2",
"test3"
)
);
因此,举例来说,我愿意阵列 “测试” 内部算上3个值...( 'TEST1', 'test2的', 'TEST3')?
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);
我想我刚想出了一个相当不同的方式来计算(无限)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(array [0])是否有效? – Drewdin
去猜测不,因为它是一个关联数组。那是我原来的回答,也是令人尴尬的错误! –