繁体   English   中英

数组的PHP Count值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM