2011-08-24 72 views
0

有没有一种方法来计算多维数组()的值?PHP数组数值

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

因此,举例来说,我愿意阵列 “测试” 内部算上3个值...( 'TEST1', 'test2的', 'TEST3')?

+0

count(array [0])是否有效? – Drewdin

+0

去猜测不,因为它是一个关联数组。那是我原来的回答,也是令人尴尬的错误! –

回答

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

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

谢谢,Dogbert,这是完美的。 :) – Adam

+2

如果它是完美的,那么你应该upvote它并接受。 – Layke

+0

给我机会:) – Adam

0

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

0

静态数组:

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

如果你不知道你的阵列多久将是:

foreach($families as $familyName => $familyMembers) 
{ 
    echo $familyName . ' has got ' . count($familyMembers) . ' family members.'; 
} 
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); 
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; 

?>