I have the following data of which I’m trying to sum up the total fare but php keeps throwing this error Warning: A non-numeric value encountered in....
JavaScript
x
$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 have tried the above, it adds up the numbers correctly but still keeps throwing the error. What is the correct way of handling this error? I
Advertisement
Answer
You are adding up string values cast them to float
JavaScript
$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";