2011-08-24 5 views
0

다차원 배열()의 값을 세는 방법이 있습니까?PHP 배열 값 계산

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

그래서 예를 들면, 나는 ... 배열 "테스트"내 ('TEST1', 'TEST2', 'TEST3')을 3 개 값을 계산 싶어?

+0

count (array [0]) 그 작업을 수행 했습니까? – Drewdin

+0

연관 배열이기 때문에 추측하지 않으려 고합니다. 그건 내 원래의 대답과 당황하게 잘못되었습니다! –

답변

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

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

고마워, 도버트가 완벽 해. :) – 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; 

?>