2013-02-03 4 views
1

나는 아주 이상한 배열이 있습니다카운트 배열 요소

Array 
(
    [title] => title 
    [weight] => 0 
    [0] => Text1 
    [1] => Text2 
    [additional] => Info 
} 

이 어떻게 (만) 숫자입니다 키 배열 요소를 세는를?

+0

내가 모든 솔루션이 필요합니다 상상 사용할 수 있습니다 루프 –

+0

@Randy 루프를 사용할 때의 문제점은 무엇입니까? – CodeCaster

+0

루프없이 할 수있는 기회가 없습니까? – Randy

답변

8
$data = array(
    'title' => 'title', 
    'weight' => 0, 
    0 => 'Text1', 
    1 => 'Text2', 
    'additional' => 'Info' 
); 

$keyCount = count(
    array_filter(
     array_keys($data), 
     'is_numeric' 
    ) 
); 

var_dump($keyCount); 

편집

그리고 PHP 버전 5.6.0에서, 당신은

$keyCount = count(
    array_filter($data, 'is_numeric', ARRAY_FILTER_USE_KEY) 
); 
+0

두 답변 사이의 속도 테스트가 필요합니다 :-) –

+0

@Dagon - 다음 두 답변 사이의 속도 테스트를 실행합니다. 두 –

+0

나는이 솔루션이 어떻게 그렇게 잘 작동하는지 믿을 수 없다. 정말 고맙습니다! 아주 청초한 해결책! – Randy

2

은 조용하고 단순해야한다 :

$i = 0; 
foreach ($arr as $k => $v) { 
    if (is_numeric($k)) 
     $i++; 
}