PHP数组的计数值



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

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

例如,我想计算数组"Test"中的3个值。。。('test1','test2','test3'(?

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

相关内容

  • 没有找到相关文章

最新更新