2017-08-30 78 views
0

特定領域我有一個數組(油漆),其中輸出如下所示:計數陣列

array(3) { 
    ["id"]=> string(1) "2" 
    ["type"]=> string(1) "O" 
    ["number"]=> string(1) "1" 
} 

array(3) { 
    ["id"]=> string(1) "3" 
    ["type"]=> string(1) "W" 
    ["number"]=> string(1) "3" 
} 
array(3) { 
    ["id"]=> string(1) "4" 
    ["type"]=> string(1) "W" 
    ["number"]=> string(1) "5" 
} 

等等

我試圖在類型字段如何往往含有W. 所以在這種情況下,我應該有2 輸出他應該先跳過,因爲該類型字段爲O.

我試了一下:

$sum = count($paint["type=W"]); 

雖然這並不奏效。 是否可以只計算類型值W的頻率?

+1

'$ sum = count($ paint [「type = W」]);''可能是一個小錯字插入] –

+0

@ North-Wind:可能不包含語法錯誤,但仍不會做Robbert想要的。 –

+0

我在我的第一篇文章中編輯過。但是這仍然不起作用。 – Robbert

回答

0

怎麼樣一個簡單的循環?

var count = 0; 
for (var i =0; i< array.length; i++) { 
     if($paint[i]['type'] === 'W'){ 
      count++; 
     } 
} 
+1

現在這個假設是2D數組?該信息不在問題中。 –

1

嘗試使用array_filter

$typeW = array_filter($array1, fucntion($sub) { 
    return $sub['type'] === 'W'; 
}); 
echo count($typeW); 
+0

該解決方案假設它是一個二維數組,我們不知道。 –

+0

否則這個問題根本沒有什麼意義:( – t1gor

+0

這個數組可能是從數據庫中取出的行。一個接一個地取數據庫。 –

1

希望這簡單的將是有幫助的。在這裏,我們使用array_column來獲取所有具有密鑰的值爲type,然後使用array_count_values來計數值。

Try this code snippet here

$result=array_count_values(array_column($array,"type")); 
print_r($result["W"]); 

輸出: 2

0

使用而循環:

<?php 
$paint = array(); 
$i=0; 
$x=0; 
while($i<count($paint)){ 
    if($paint[$i][1]=="W"){ 
     $x++; 
    } 
    $i++; 
} 

回聲 「結果:$ X」; - > 2

+2

這只是醜陋的,爲什麼不使用'foreach'循環? –

+1

這是一個品味的問題,我的朋友 – t1gor

+0

@ t1gor:是的,它是,但也是經驗。循環有一個內建的計數器,你不會錯的,用'while'循環可能會在'$ x ++;' - '$ i ++;'中迷路,把它們混合起來造成一個困難的錯誤,如果你沒有簡單的計數器,應該使用循環,即使是for循環會更好,因爲它可以將計數器放在一個地方。 –