计算数组中的特定字段

时间:2017-08-30 11:02:39

标签: php count

我有一个数组(paint),输出如下所示:

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的频率?

4 个答案:

答案 0 :(得分:1)

尝试使用array_filter

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

答案 1 :(得分: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

答案 2 :(得分:0)

简单的for循环怎么样?

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

答案 3 :(得分:0)

使用while循环:

<?php
$paint = array();
$i=0;
$x=0;
while($i<count($paint)){
    if($paint[$i][1]=="W"){
        $x++;
    }
    $i++;
}
回声&#34;结果:$ x&#34 ;; - &GT; 2