[英]Sums records inside foreach loop PHP
I'm using php laravel, Lets suppose below $records
is an array and has only 3 records, the foreach loop will run 3 times. 我正在使用php laravel,让我们假设
$records
下面是一个数组,只有3条记录,foreach循环将运行3次。
foreach ($records as $record) {
// Here im using query to get logs against each record id.
$logs = "SELECT delivery, COUNT(*) as logs FROM logs where id =
$record['id] group by delivery";
// Run query and it returns array
var_dump($logs)
}
This dump query gets records like this.. 此转储查询获取这样的记录。
1st time 第一次
array (size=2)
0 =>
array (size=2)
'delivery' => string '0' (length=1)
'logs' => string '1' (length=1)
1 =>
array (size=2)
'delivery' => string '1' (length=1)
'logs' => string '1' (length=1)
2nd time 第二次
array (size=1)
0 =>
array (size=2)
'delivery' => string '1' (length=1)
'logs' => string '1' (length=1)
3rd time 第三次
array (size=2)
0 =>
array (size=2)
'delivery' => string '0' (length=1)
'logs' => string '1' (length=1)
1 =>
array (size=2)
'delivery' => string '1' (length=1)
'logs' => string '1' (length=1)
I want to calculate records like 我想计算记录
Here is how i'm calculating If delivery = 0 , it means failed, if delivery = 1, it means delivered, So there are 3 delivered and 2 failed in above scenario. 这是我计算的方式,如果delivery = 0,则表示失败,如果delivery = 1,则表示已交付,因此在上述情况下有3交付,而2则失败。
Here is what i have tried but it not giving me correct result. 这是我尝试过的方法,但没有给我正确的结果。
$logsSENT = $logsFailed = 0;
foreach ($logs as $log) {
if($log['delivery'] == 1) {
$logsSENT += $log['logs'] * $smsConsumedPerMessage;
}
if($log['delivery'] == 0) {
$logsFailed += $log['logs'] * $smsConsumedPerMessage;
}
}
$total_sms += $logsSENT + $logsFailed;
BTW 'logs' => string '1' (length=1)
Logs value can be more than 1, It can be 2, 3 etc.. BTW'logs
'logs' => string '1' (length=1)
日志值可以大于1,可以为2,3等。
Secondly, In my IFs I'm multiplying it with 1 for example $logsSENT = $logs[1]['logs'] * 1;
其次,在我的IF中,我将其乘以1,例如
$logsSENT = $logs[1]['logs'] * 1;
1 is only for above example, It can be changed later to 2, 3 etc 1仅用于上面的示例,以后可以更改为2、3等
<?php
$array = array(
array(
array("delivery" => 0, "logs" => 1),
array("delivery" => 1, "logs" => 1)
),
array(
array("delivery" => 1, "logs" => 1)
),
array(
array("delivery" => 0, "logs" => 1),
array("delivery" => 1, "logs" => 1)
)
);
$sum = $deliver = $failed = 0;
foreach ($array as $value) {
$i=$j=1;
foreach ($value as $va) {
if($va['delivery']) {
$deliver = $deliver + $i;
$i++;
} else {
$failed = $failed + $j;
$j++;
}
}
}
echo 'Total:' .($deliver + $failed).'<br>';
echo 'Deliver: '.$deliver.'<br>';
echo 'Failed: '.$failed.'<br>';
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.