从PHP中的数组中计算项目

时间:2017-01-19 04:26:32

标签: php arrays

如何在多维数组中计算具有特殊条件的元素数?

Array
(
    [0] => Array
        (
            [item] => 'Banana'
        )

    [1] => Array
        (
            [item] => 'Banana'

        )

    [2] => Array
        (
            [item] => 'Cherry'
        )

    [3] => Array
        (
            [item] => 'Apple'

        )
)

例如,对于此数组,我应该找到2的{​​{1}}。

我尝试过:

Banana

请问有更好的解决方案吗?

感谢。

2 个答案:

答案 0 :(得分:2)

方法1:

使用内置函数 - array_columnarray_count_values

print_r(array_count_values(array_column($arr,'item')));

方法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
)

所以当你想要Banana的数量时,你可以这样得到它:

echo $countArr['Banana'];

答案 1 :(得分:0)

使用SqlCommand.ExecuteScalar,非常简单:

array_count_values()

另一方面,除非您想要计算所有值,否则您的方法没有任何问题。另外在旁注中,我认为你会发现foreach($array as $arr) { $new[] = $arr['item']; } print_r(array_count_values($new)); 会比foreach()稍微快一点,特别是在大阵列上。