首页 > 解决方案 > 如何对数组值求和,数组是从 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

标签: php

解决方案


中的项目$age是数组,而不是整数。你得到“不支持的操作数类型”,因为你试图将它们添加到 0。

您可以使用 array_column 对年龄键求和。

$ageSummation = array_sum(array_column($age, 'age'));

您也可以在查询中执行此操作,除非您要将单个值用于某事。我看到您$length=count($age);的代码中也有,这表明您可能正在计算平均年龄 - 如果您愿意,您也可以在查询中执行此操作。

SELECT AVG(age) FROM unisex WHERE age >= ?;

推荐阅读