我最初需要将x amount [trip_price]的数组总和从系统中的单个预订中添加到一起。这是一次预订,包含同一预订中的两种类型的款项。
总金额是$booking_total = $post_metas['fcb_booking_total'][0];
,而这又产生一个静态数字,因此当预订发生变化时,价格从未更新过。
$get_price = $wpdb->get_results("select trip_price from fcb_booking where order_id = " . $order_id . " order by start_date_time asc");
print_r($get_price);
Array
(
[0] => stdClass Object
(
[trip_price] => 0
)
[1] => stdClass Object
(
[trip_price] => 5000
)
)
EDIT。
从下面的答案我用过这个。这使得更新将价格更改为用户等的新价格。这需要在电子邮件确认中显示。
$get_price = $wpdb->get_results("select trip_price from fcb_booking where order_id = " . $order_id . " order by start_date_time asc");
$booking_total = 0;
foreach($get_price as $key => $value) {
$booking_total += $value->trip_price;
};
如果用户在网站上支付了100%或50%的选项,任何管理员折扣和5%的额外费用,那么我用它来返回价格
$total = $booking_total + $extra_total;
$total = $total * 1.05;
if($need_to_pay){
if($amounttopay == 50){
$total = $total / 2;
}
}
if($admin_discount>0){
$total = $total - $admin_discount;
}
return $total;
答案 0 :(得分:2)
尝试此代码:
$total = 0;
foreach($get_price as $key => $value) {
$total += $value->trip_price;
}
echo $total;
答案 1 :(得分:2)
使用循环foreach
来回显和求和:
$sum = 0;
foreach ($get_price as $price) {
echo "price =" . $price->trip_price . "\n";
$sum += $price->trip_price;
}
echo "Total sum=" . $sum;
答案 2 :(得分:2)
您可以在php中使用array_sum()
array_sum - 计算数组中值的总和
SELECT
*,
SG = CASE Q.Cnt
WHEN 1 THEN '3 & 4'
ELSE CAST(T1.[Services] AS VARCHAR(10))+' Only' END
FROM YourTable T1
OUTER APPLY
(
SELECT
Cnt = COUNT(DISTINCT Srv)
FROM YourTable T2
WHERE t2.Id = t1.Id
AND t2.[Services] IN (3,4)
AND t2.[Services] <> t1.[Services]
)Q
答案 3 :(得分:1)
检查数组是否为空。
使用PHP的empty()功能。
如果我们不为此添加支票,我们最终会出错。
循环数组。
拿一个变量来节省总数。
在每次迭代中添加总和。
$get_price = $wpdb->get_results("select trip_price from fcb_booking where order_id = " . $order_id . " order by start_date_time asc");
$total = 0;
if (! empty($get_price)) {
foreach($get_price as $key => $value) {
$total += $value->trip_price;
}
}
echo $total;
答案 4 :(得分:1)
我不确定你的目标是打印出每个元素和/或计算总和。
有几种方法可以实现这一目标:
完整SQL :依赖SQL引擎计算总和
$totalAmount = $wpdb->get_results("
SELECT SUM(trip_price) AS total_amount
FROM fcb_booking
WHERE order_id = " . $order_id . " ORDER BY start_date_time ASC");
在这种情况下,您无法真正显示您正在添加的每个元素。
在Php中循环
$prices = $wpdb->get_results("
SELECT trip_price
FROM fcb_booking
WHERE order_id = " . $order_id . "
ORDER BY start_date_time ASC");
// Array map gives $arr = [0, 5000];
$arr = array_map(function ($el) {
return $el->trip_price;
}, $prices);
// Adding up prices: 0 + 5000 = 5000
$sum = array_sum($arr);
var_dump($sum);
// => int(5000)
如果您要打印每个价格,只需在echo $el
的可调用项中添加array_map
。