PHP计算数组的值

时间:2011-08-24 13:55:25

标签: php arrays multidimensional-array

有没有办法计算多维数组()的值?

$families = array
(
"Test"=>array
(
  "test1",
  "test2",
  "test3"
)
); 

例如,我想计算数组“Test”中的3个值...('test1','test2','test3')?

5 个答案:

答案 0 :(得分:4)

$families = array
(
"Test"=>array
(
  "test1",
  "test2",
  "test3"
)
); 

echo count($families["Test"]);

答案 1 :(得分:1)

我想我只想出一种计算(无限制)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;

?>

答案 2 :(得分:0)

count方法必须让你到那里。根据您的实际问题,您可能需要编写一些(递归)循环来汇总所有项目。

答案 3 :(得分:0)

静态数组:

echo 'Test has ' . count($families['test']) . ' family members';

如果您不知道阵列的长度:

foreach($families as $familyName => $familyMembers)
{
    echo $familyName . ' has got ' . count($familyMembers) . ' family members.';
}

答案 4 :(得分:0)

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);