在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));