在php中进行求和时如何处理空值

在php中进行求和时如何处理空值,php,Php,我有以下数据,我试图对总票价进行汇总,但php不断抛出此错误警告:在.. $read_one_vehicle_response = ' { "response_code": 0, "response_message": "Request processed succ

我有以下数据,我试图对总票价进行汇总,但php不断抛出此错误
警告:在..

$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

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

如果您的数据不能转换为float,它将是0

使用PHP的另一种方法:


更多信息和讨论请参见SO about

您正在添加字符串值,并将其转换为浮点值

$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";
你可以直接做,

$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";

总票价为10英镑
$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";
$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";