php - 如何对数组值求和,数组是从 SQL 查询创建的
问题描述
我想对关联数组值求和。数组是从 SQL 查询创建的。
我试图用 array_sum 求和,但数组 sum 不起作用,因为我的数组不是典型的数组 ($array=array(1,2,3))。Array_sum 将返回 0。
public function getAge(){
if(isset($_SESSION['age_hold']) && !empty($_SESSION['age_hold']) ){
$sqlAge="SELECT age FROM unisex
WHERE age >=".$_SESSION['age_hold'] ;
$age= Yii::$app->db->createCommand($sqlAge)->queryAll();
return $age;
}
}
$age=$this->getAge();
$length=count($age);
$ageSummation=0;
foreach($age as $key=>$item) {
$ageSummation=$ageSummation+$item;
}
显示 $age 数组:
Array ( [0] => Array ( [age] => 90 ) [1] => Array ( [age] => 91 ) [2] => Array ( [age] => 92 ) [3] => Array ( [age] => 93 ) [4] => Array ( [age] => 94 ) [5] => Array ( [age] => 95 ) [6] => Array ( [age] => 96 ) [7] => Array ( [age] => 97 ) [8] => Array ( [age] => 98 ) [9] => Array ( [age] => 99 ) [10] => Array ( [age] => 100 ) )
当我使用该 foreach 运行代码时,错误是“不支持的操作数类型”。
我希望输出为 90+91+92+...+100
解决方案
中的项目$age
是数组,而不是整数。你得到“不支持的操作数类型”,因为你试图将它们添加到 0。
您可以使用 array_column 对年龄键求和。
$ageSummation = array_sum(array_column($age, 'age'));
您也可以在查询中执行此操作,除非您要将单个值用于某事。我看到您$length=count($age);
的代码中也有,这表明您可能正在计算平均年龄 - 如果您愿意,您也可以在查询中执行此操作。
SELECT AVG(age) FROM unisex WHERE age >= ?;
推荐阅读
- javascript - 未捕获的类型错误:$(...).chosen 不是 rails 应用程序中的函数
- python - 如何使用 python 重建和更改数据集的结构?
- android - 如何确保新的 NFC 意图在屏幕关闭/再次打开后传递给我的活动?
- python - 如何修复这个精灵类的移动(敌人)
- ptrace - 关于使用 PTRACE_GETSIGMASK 和 PTRACE_SETSIGMASK 的 AC 示例?
- swift - 如何通过 url 将图像直接从 Google Drive 上传到 ImageView?
- python - OSX上python virtualenv中mysqlclient的问题
- html - 如何使用 ajax 调用在 html div 中显示 xml 文件的内容?
- excel - VBA:从另一个工作表复制图片问题;剪贴板不清除?
- swift - 使用 API 状态监听设备变化确实发生了变化