我有一个数组(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的频率?
答案 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
计算值。
$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