2012-09-02 43 views
1
$example = 
    array 
    'test' => 
     array(
     'something' => 'value' 
    ), 
    'whatever' => 
     array(
     'something' => 'other' 
    ), 
    'blah' => 
     array(
     'something' => 'other' 
    ) 
); 

我想要計算$example的子陣列中有多少個元素的值爲other用PHP計算某些值的子陣列的總數

要做到這一點,最簡單的方法是什麼?

回答

6

array_filter()是你所需要的:

count(array_filter($example, function($element){ 

    return $element['something'] == 'other'; 

})); 

如果你想更靈活:

$key = 'something'; 
$value = 'other'; 

$c = count(array_filter($example, function($element) use($key, $value){ 

    return $element[$key] == $value; 

})); 
+0

這一個對我的作品「原樣」,但是當我嘗試用變量替換「other」時,它只是給了我一個0的結果:/ – Alisso

+1

這是因爲lambda函數不知道你的變量 - 如果你想使用var,請參閱我的編輯。 – moonwave99

0

你可以嘗試以下方法:

$count = 0; 
foreach($example as $value) { 
    if(in_array("other", $value)) 
     $count++; 
} 
+0

-1缺少優美感 – mate64