多维数组求和列

时间:2017-03-23 13:18:02

标签: php arrays

我有一个多维数组,其中包含种族类型列和小船列(其中包含每种种族类型的小船总数)。这就是我获取数组值的方法:

$boats = $wpdb->get_results("
        select rt.race_type
              ,sum(tr.boat_count) boats
          from registrations tr
         group by rt.race_type;
");

阵列工作得很好。但是现在我想要获得所有种族类型的船只总数(不使用循环)。经过一些研究,我尝试了下面的代码,但它似乎没有起作用:

$totalboats = array_sum(array_column($boats,'boats'));

当我运行以下命令时:

echo $totalboats;

结果是0,这显然是错误的。

有什么想法吗?我正在运行PHP 5.6.29。

==================编辑01 ==================

根据要求,这是 $ boats var_dump

array(2) {
    [0]=>
        object(stdClass)#672 (2) {
            ["race_type"]=> string(12) "Elite 8-Hour"
            ["boats"]=> string(1) "2"
        }
    [1]=>
        object(stdClass)#673 (2) {
            ["race_type"]=> string(12) "Sport 4-Hour"
            ["boats"]=> string(1) "2"
        }
}

2 个答案:

答案 0 :(得分:2)

问题是你的$boats子元素是对象而不是数组。 array_column不适用于PHP5中的对象(不过在PHP7中也是如此)。

您可以使用array_map使用变通方法,如this answer to a previous question

所示
$totalboats = array_sum(
    array_column(
        array_map(
            function($o){
                return (array)$o;
            },
            $boats),
       'boats')
    );
echo $totalboats; // echoes "4"

答案 1 :(得分:-1)

如果您的变量是数组而不是对象,则可以使用此

#Fruits
##Orange
###Average
###5
###Imported
###4