在PHP中计算数组中的项
如何在多维数组中计算具有特殊条件的元素数在PHP中计算数组中的项,php,arrays,Php,Arrays,如何在多维数组中计算具有特殊条件的元素数 Array ( [0] => Array ( [item] => 'Banana' ) [1] => Array ( [item] => 'Banana' ) [2] => Array ( [item] => 'Cherry'
Array
(
[0] => Array
(
[item] => 'Banana'
)
[1] => Array
(
[item] => 'Banana'
)
[2] => Array
(
[item] => 'Cherry'
)
[3] => Array
(
[item] => 'Apple'
)
)
例如,对于这个数组,我应该为Banana
找到2
我试过:
$i=0;
foreach($array as $arr) {
if($arr[item]=='Banana') { $i++; }
}
请问有更好的解决办法吗
谢谢。方法1: 使用内置功能-和:
方法2: 使用foreach的简单逻辑是将水果作为键,将其计数作为值:
$arr = [
["item"=>"Banana"],
["item"=>"Banana"],
["item"=>"Cherry"],
["item"=>"Apple"]
];
$countArr = [];
foreach ($arr as $value) {
$item = $value['item'];
if(array_key_exists($item, $countArr)) // If key exists, increment its value
$countArr[$item]++;
else // Otherwise, assign new key
$countArr[$item] = 1;
}
print_r($countArr);
两种情况下的最终结果都是:
Array
(
[Banana] => 2
[Cherry] => 1
[Apple] => 1
)
所以当你想要香蕉的计数时,你可以这样得到:
echo $countArr['Banana'];
使用
array\u count\u values()
,这非常简单:
foreach($array as $arr) {
$new[] = $arr['item'];
}
print_r(array_count_values($new));
另一方面,您的方法没有任何问题,除非您想计算所有值。另一方面,我想你会发现
foreach()
比array\u column()
要快一点,尤其是在大型数组上。这个解决方案有什么问题?如果条件项
没有引号,我猜你会出错!您可以组合sizeof()
和array\u filter()
只需使用一行打印(array\u count\u值(array\u列($your\u array,'item'));你的解决方案比我的更有趣。:)@FAD查看更新版!最简单的内置函数在第一个方法中,如何指定要计数的项(即:Banana
)?这两个方法都返回计数数组,因此您可以获取echo$countArr['Banana']代码>
foreach($array as $arr) {
$new[] = $arr['item'];
}
print_r(array_count_values($new));