在php中求和时如何处理null



我有以下数据,我正试图总结总票价,但php一直抛出此错误Warning: A non-numeric value encountered in....

$read_one_vehicle_response = '
{
"response_code": 0,
"response_message": "Request processed successfully",
"id": "1",
"ticket": [
{
"id": "1",
"total_fare": "1000",
"status": "Paid"
},
{
"id": "2",
"total_fare": "80",
"status": "Paid"
},
{
"id": null,
"total_fare": null,
"status": null
}
],
"created": "2020-09-12 15:42:29",
"modified": "2020-09-12 20:42:29",
"status": "Active"
}';

$income = "";
foreach (json_decode($read_one_vehicle_response, true)["ticket"] as $ticket) {
if (is_numeric($ticket{"total_fare"})) {
$total_fare = $ticket{"total_fare"};
}
else {
$total_fare = 0.00;
}
$income += $total_fare;
}
echo "Total: $income";

我试过上面的方法,它把数字加起来是正确的,但仍然会出错。处理此错误的正确方法是什么?I

您正在将字符串值相加并将其转换为浮动

$income = floatval(0);
foreach (json_decode($read_one_vehicle_response, true)["ticket"] as $ticket) {
if (is_numeric($ticket{"total_fare"})) {
$total_fare = floatval($ticket{"total_fare"});
}
else {
$total_fare = 0.00;
}
$income += $total_fare;
}
echo "Total: $income";

在do(+(之前转换为float或int类型。尝试:

$income += (float)$total_fare;

如果您的数据无法转换为浮点,则它将为0。

PHP floatval的另一种方式:

$income += floatval($total_fare);

SO中关于PHP字符串浮动的更多信息和讨论

你可以直接做,

$income = 0;
foreach (json_decode($read_one_vehicle_response, true)["ticket"] as $ticket) {
$total_fare = (float) $ticket{"total_fare"};
$income += $total_fare;
}
echo "Total: $income";

最新更新