Php 如何对数组中的值求和
我试图对DB中的所有Php 如何对数组中的值求和,php,arrays,Php,Arrays,我试图对DB中的所有选择COUNT进行求和,以获得员工的总工时。 $theWeek以时间戳格式包含当前周的天数,$vendur是从HTML和JS获取的员工id 这是我打印($weekStat)时得到的结果,这很好,因为在星期三(图例2),员工工作6小时,其余0小时: Array ( [0] => Array ( [sum_count] => 0 ) [1] => Array (
选择COUNT
进行求和,以获得员工的总工时。
$theWeek
以时间戳格式包含当前周的天数,$vendur
是从HTML和JS获取的员工id
这是我打印($weekStat)时得到的结果,这很好,因为在星期三(图例2),员工工作6小时,其余0小时:
Array
(
[0] => Array
(
[sum_count] => 0
)
[1] => Array
(
[sum_count] => 0
)
[2] => Array
(
[sum_count] => 6
)
[3] => Array
(
[sum_count] => 0
)
[4] => Array
(
[sum_count] => 0
)
[5] => Array
(
[sum_count] => 0
)
[6] => Array
(
[sum_count] => 0
)
)
问题是当Iecho($total)时代码>&echo((int)$value)
对于每个$total
我得到0
,对于每个$value
我只得到1
。我需要获得$total=6
这是我的密码:
function getHisStats($vendeur, $theWeek){
$connexion = connexion();
$weekStat = array(); // stock les plannings de chaque semaine
$somme = 0;
$total = 0;
// On récupere chaque jour de la semaine et on assigne un planning à chaque jour
for($i = 0; $i < 7; $i++){
// Creating YY-MM-DD format for fetch in DB
$dateCurrent = getdate($theWeek[$i]);
$day = $dateCurrent['mday'];
$month = $dateCurrent['mon'];
$year = $dateCurrent['year'];
// Used to fetch date
$jour = $year. '-' . $month . '-' . $day;
// Counting the number of instances of id_planning
$request_travail = $connexion->prepare("SELECT COUNT(id_planning) AS sum_count FROM plannings WHERE id_employe = ? AND date_planning = ? AND (id_affectation = ? OR id_affectation = ? OR id_affectation = ? OR id_affectation = ?) AND id_validation = ?");
$request_travail->execute(array($vendeur, $jour, 0, 2, 8, 9, 1));
$resultat_travail = $request_travail->fetchAll(PDO::FETCH_ASSOC);
// Stocking the results
array_push($weekStat, $resultat_travail[0]);
}
foreach($weekStat as $key => $value){
echo($total); // I get 7 at the end because $value is always = 1
echo((int)$value); // I get 1 everytime
$total = $total + (int)$value;
}
return $weekStat;
}
函数getHisStats($vendur,$theWeek){
$connexion=connexion();
$weekStat=array();//股票价格
$somme=0;
$total=0;
//关于《和平日》和《计划日》的分配
对于($i=0;$i<7;$i++){
//为数据库中的fetch创建YY-MM-DD格式
$dateCurrent=getdate($theWeek[$i]);
$day=$dateCurrent['mday'];
$month=$dateCurrent['mon'];
$year=$dateCurrent['year'];
//用于获取日期
$jour=$year.'-'.$month.'-'.$day;
//计算id_规划的实例数
$request\u travail=$connexion->prepare(“选择COUNT(id\u planning)作为id\u employe=?和date\u planning=?和(id\u affectation=?或id\u affectation=?或id\u affectation=?)和id\u validation=?)的计划总数”;
$request_travail->execute(数组($vendur,$jour,0,2,8,9,1));
$resultat_-travail=$request_-travail->fetchAll(PDO::FETCH_-ASSOC);
//储存结果
数组_push($weekStat,$resultat_-travail[0]);
}
foreach($key=>$value的weekStat){
echo($total);//我最后得到7,因为$value总是=1
echo((int)$value);//每次我得到1
$total=$total+(int)$value;
}
返回$weekStat;
}
记录单个结果时,每次都要添加数据行。由于您使用的唯一值是sum\u count
,因此可以直接添加此值
array_push($weekStat, $resultat_travail[0]['sum_count']);
然后,您应该能够使用array\u sum()
而不是循环来计算总
$total = array_sum($weekStat);
您还可以使用SQL进行求和,这可能值得研究。这是因为您试图将一个数组的形式转换为['sum\u count'=>6]
“to int”,这没有多大意义。您应该正确访问该数组中键sum\u count
下包含的值。