我有一个多维数组,其中包含种族类型列和小船列(其中包含每种种族类型的小船总数)。这就是我获取数组值的方法:
$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"
}
}
答案 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