Как отлаживать «обнаруженное нечисловое значение» в php?

Я получаю эту ошибку возврата PHP в строке 101 BookinginfoController.php:

A non-numeric value encountered...

Вот некоторые из сценариев. Пожалуйста, объясните здесь в общих чертах.

$token =csrf_token();
       $idmy = Auth::user()->id;

       $bookingget = DB::table('booking')

               ->where('user_id', '=', $idmy)
                ->where('status', '=', 'pending')
                ->where('token', '=', $token)
               ->orderBy('book_id','desc')
                ->get();

                $neshopp = $bookingget[0]->shop_id;

       $shopnewie = DB::table('shop')
         ->where('id', '=', $neshopp)
         ->get();

         $id = $shopnewie[0]->user_id;



       $userdetails = DB::table('users')
         ->where('id', '=', $id)
         ->get();

        $booking = DB::table('booking')
               ->where('token', '=', $token)
               ->where('status', '=', 'pending')
               ->where('user_id', '=', $idmy)
               ->orderBy('book_id','desc')
                ->get();


        $ser_id=$booking[0]->services_id;
            $sel=explode("," , $ser_id);
            $lev=count($sel);
            $ser_name="";
            $sum="";
            $price="";

        for($i=0;$i<$lev;$i++)
            {
                $id=$sel[$i];   



                $fet1 = DB::table('subservices')
                                 ->where('subid', '=', $id)
                                 ->get();
                $ser_name.=$fet1[0]->subname.'<br>';
                $ser_name.=",";              



                $fet2 = DB::table('seller_services')
                                 ->where('subservice_id', '=', $id)
                                 ->where('shop_id', '=', $neshopp)
                                 ->get();
                $price.=$fet2[0]->price.'<br>';
                $price.=",";    




                $ser_name=trim($ser_name,",");
                $price=trim($price,",");    
                $sum+=$fet2[0]->price;

Я использую PHP 7.2

Строка 99, 100, 101 - это

$ser_name=trim($ser_name,",");

 $price=trim($price,",");   

$sum+=$fet2[0]->price;
1
0
748
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете php 7.1+, это вызвано тем, что вы инициализируете переменную $sum как строку emtpy:

$sum = '';

Вместо этого вы должны инициализировать его как число:

$sum = 0;

См. пример.

Очевидно, что $fet2[0]->price должен быть числовым, но если это строка, php будет преобразовывать ее без предупреждений.

Другие вопросы по теме