如何在PHP中调试“遇到的非数值”?

时间:2018-10-31 11:54:59

标签: javascript php error-handling numeric

我在BookinginfoController.php第101行中收到此PHP返回错误:

  

遇到非数值...

这是其中的一些脚本。请在这里用基本术语进行解释。

$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 :(得分:2)

如果您使用的是php 7.1+,则是由于将$sum变量初始化为空字符串而引起的:

$sum = '';

相反,您应该将其初始化为数字:

$sum = 0;

请参见an example

很显然,$fet2[0]->price必须是数字,但是如果它是字符串,则php会在没有警告的情况下进行强制转换。