【问题标题】:PHP Warning: Creating default object from empty valuePHP 警告:从空值创建默认对象
【发布时间】:2023-03-09 17:03:01
【问题描述】:

我正在使用此文件,但收到此警告。

脚本运行正常。但我想摆脱这个消息。

行:$myObj->afstand= $formattedNum . " km"; 给出警告。

我尝试创建一个新课程,但没有任何效果。

有人知道如何消除警告吗?

 <?php
      $lat1= $_POST['lat1'];
      $lon1= $_POST['lon1'];

      $lat2= $_POST['lat2'];
      $lon2= $_POST['lon2'];


     $lat3= $_POST['lat1'];
     $lon3= $_POST['lon1'];

     $lat4= $_POST['lat2'];
     $lon4= $_POST['lon2'];

    $unit = "K";

    function distance($lat1, $lon1, $lat2, $lon2, $unit) {

           $theta = $lon1 - $lon2;
           $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
           $dist = acos($dist);
           $dist = rad2deg($dist);
           $miles = $dist * 60 * 1.1515;
           $unit = strtoupper($unit);

           if ($unit == "K") {
              return ($miles * 1.609344);
           } else if ($unit == "N") {
              return ($miles * 0.8684);
           } else {
                return $miles;
              }
       }

        $formattedNum = number_format(distance($lat1, $lon1, $lat2, $lon2, "K"), 1);


        $myObj->afstand= $formattedNum . " km";

        $a = $lat3;
        $a .= ",";
        $a .=$lon3;

        $myObj->saddr = $a;

        $myObj->nwlat = $lat3;
        $myObj->nwlon = $lon3;

        $myObj->nwlat2 = $lat4;
        $myObj->nwlon2 = $lon4;

        $myJSON = json_encode($myObj);

        echo $myJSON;
?>

【问题讨论】:

    标签: php


    【解决方案1】:

    $myObj 是什么?我想你忘了初始化它。

    $myObj = new stdClass();
    

    或者更好地用它的属性来定义你的类,比如:

    final class MyObj
    {
        public $afstand;
        public $saddr;
    
        public $nwlat;
        public $nwlat2;
    
        public $nwlon;
        public $nwlon2;
    }
    

    说我建议您改进属性的名称。 “后援”代表什么?那么“lat & lon”属性的“nw”前缀呢?

    使用意图揭示、发音和搜索的名称:https://github.com/Chemaclass/php-best-practices/blob/master/technical-skills/meaningful-names.md

    【讨论】:

      【解决方案2】:

      您忘记声明和分配myObj 变量。

      $myObj = new stdClass();
      // $myObj->afstand = '';
      

      【讨论】:

      • 谢谢,这就是问题所在。我没有再次看到错误消息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2013-06-19
      • 2016-07-31
      • 1970-01-01
      相关资源
      最近更新 更多