2012-05-15 45 views
4

我有一個數組,如下所示。如何計算php關聯數組中的項數

Array 
(
[0] => Array 
    (
     [item] => Banana Cream Cheesecake 
     [item_id] => 3 
     [product] => Desserts 
    ) 

[1] => Array 
    (
     [item] => Banana Cream Cheesecake 
     [item_id] => 3 
     [product] => Desserts 
    ) 

[2] => Array 
    (
     [item] => Banana Cream Cheesecake 
     [item_id] => 3 
     [product] => Desserts 
    ) 

[3] => Array 
    (
     [item] => Banana Cream Cheesecake 
     [item_id] => 3 
     [product] => Desserts 
    ) 

[4] => Array 
    (
     [item] => Milk 
     [item_id] => 2 
     [product] => Soda 
    ) 

[5] => Array 
    (
     [item] => Banana Cream Cheesecake 
     [item_id] => 3 
     [product] => Desserts 
    ) 
) 

我想打印: -

Banana Cream Cheesecake = 5 

怎麼辦呢?

+0

請參閱:http://stackoverflow.com/questions/1317612/count-number-of-values-in-array-with-a-given-value – Jon

+0

由於有ID您應該使用它們來計數項目,標籤可能會改變,而ID應該留下。 –

回答

4
$count = 0; 
foreach ($array as $key=>$value) { 
    if ($value ['item'] == 'Banana Cream Cheesecake') { 
     $count++; 
    } 
} 
echo $count; 
+0

我希望更多的可用性,他真的想要一個總數的數組,而不是隻知道有多少特定的甜點? –

+0

Jereon是對的。我想要計算特定的甜點 – Navdeep

+0

這個答案比'array_count_values()'快,我的代碼使用8次這樣的東西。花費總共0.22毫秒。 然後我改變使用'array_count_values()'一次只有這個函數花費0.39毫秒。 – vee

0

print_r數組並計算你的芝士蛋糕的出現次數。

沒有,嚴重的是,如果沒有更多的相關信息,這是一個解決方案;)

$iCount = substr_count(print_r($array, true), "cheese cake"); 
+0

+1,非常有創意! – Jeroen

+0

謝謝!答案和條件的問題,我想我可能在其他情況下做不同的自己... – Sebas

+0

它不適合我。總是返回0。 – Navdeep

5
array_count_values(array_map(function($foo){return $foo['item'];}, $arr)); 
+0

就像一個魅力 –

3

給定一個數組是這樣的:

$arr = array(array('item' => 'Banana Cream Cheesecake', 
        'item_id' => 3, 
        'product' => 'Desserts'), 
      array('item' => 'Banana Cream Cheesecake', 
        'item_id' => 3, 
        'product' => 'Desserts'), 
      array('item' => 'Banana Cream Cheesecake', 
        'item_id' => 3, 
        'product' => 'Desserts'), 
      array('item' => 'Banana Cream Cheesecake', 
        'item_id' => 3, 
        'product' => 'Desserts'), 
      array('item' => 'Milk', 
        'item_id' => 2, 
        'product' => 'Soda'), 
      array('item' => 'Banana Cream Cheesecake', 
        'item_id' => 3, 
        'product' => 'Desserts')); 

你可以使用array_count_values和獲取計數其名稱

$counted = array_count_values(array_map(function($value){return $value['item'];}, $arr)); 
echo $counted['Banana Cream Cheesecake']; 

或修改商品的ID,以工作中的作用:

$counted = array_count_values(array_map(function($value){return $value['item_id'];}, $arr)); 
// The item_id 
echo $counted['3']; 
0

只用字符串的數字instad打交道時,由於該substr_count也需要密鑰的事實,獲取一個問題,所以我用只是簡單的計算,而不是substr_count,工作正常。

$icount=count(print_r($_SESSION['id_bra'], true), $bran); 
1

擴大對@史蒂夫的answer

$counted = array_count_values(array_map(function($foo){return $foo['item'];}, $arr)); 

這給你的['item']關鍵的每個值的總和的陣列。

例如,這是數組的例子將返回:

$counted = Array 
(
    ['Banana Cream Cheesecake'] => 5 
    ['Milk'] => 1 
) 

然後打印它只是一個呼應的事情變量:

echo 'Banana Cream Cheesecake = ' . $counted['Banana Cream Cheesecake']; 
//prints "Banana Cream Cheesecake = 5" 

這裏的好處是,你不不需要爲每個需要計數的值運行for循環 - 相反,您需要一個數組,其中包含該特定鍵的所有值的總和。