【问题标题】:Notice: Trying to get property of non-object error注意:试图获取非对象错误的属性
【发布时间】:2014-05-03 10:17:00
【问题描述】:

我正在尝试从以下位置获取数据:

http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gibson

但如果我想用这段代码获取 player_name 变量:

<?  
$js = file_get_contents('http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gibson');
  $pjs = json_decode($js);
  var_dump($pjs->{'player_name'});
?>

我得到错误:

注意:试图在 **\htdocs\index.php 上获取非对象的属性 第 9 行 + var_dump() 返回:NULL

var_dump($pjs) 返回:

array(1) { [0]=> object(stdClass)#52 (15) { ["player_name"]=> string(11) "Mick_Gibson" ["player_id"]=> int(88) ["rank"]=> string(12) "FIRE TURTLEE" ["lastseen"]=> int(1393797692) ["registration_date"]=> string(19) "2012-08-10 17:01:34" ["last_mission_date"]=> string(19) "2014-03-02 21:41:50" ["time_offset"]=> int(1) ["house_id"]=> int(611) ["fines"]=> int(0) ["wanted"]=> int(0) ["police_badge"]=> bool(true) ["vip"]=> bool(false) ["staff"]=> NULL ["stats"]=> object(stdClass)#53 (23) { ["score"]=> int(2941) ["convoy_score"]=> int(818) ["ARTIC"]=> int(515) ["DUMPER"]=> int(565) ["TANKER"]=> int(56) ["CEMENT"]=> int(163) ["TRASH"]=> int(7) ["ARMORED"]=> int(9) ["VAN"]=> int(501) ["TOW"]=> int(502) ["COACH"]=> int(4) ["LIMO"]=> int(97) ["ARRESTS"]=> int(272) ["GTA"]=> int(67) ["BURGLAR"]=> int(122) ["HEIST"]=> int(1) ["PLANE"]=> int(48) ["HELI"]=> int(12) ["FAILED"]=> int(312) ["OVERLOADS"]=> int(160) ["TRUCK_LOADS"]=> int(1275) ["ODOMETER"]=> int(28320798) ["TIME"]=> int(2078450) } ["achievements"]=> array(4) { [0]=> string(20) "Professional Trucker" [1]=> string(13) "Gravel Hauler" [2]=> string(12) "Delivery Boy" [3]=> string(7) "Wrecker" } } }

【问题讨论】:

  • 您的var_dump 会告诉您到底哪里出了问题。 $pjs 是一个数组而不是一个对象。你想要`$pjs[0]->{'player_name'}
  • 这个问题似乎离题了,因为它是关于访问变量的。

标签: php syntax-error notice


【解决方案1】:

@Balamanigandan 您的原始帖子:- PHP Notice: Trying to get property of non-object error

您正在尝试访问 Null 对象。在 AngularJS 中,您没有传递任何对象,而是传递了 $_GET 元素。尝试使用$_GET['uid'] 而不是$objData-&gt;token

【讨论】:

    【解决方案2】:

    这是因为$pjs是一个单元素的对象数组,所以首先你应该访问数组元素,它是一个对象,然后访问它的属性。

    echo $pjs[0]->player_name;
    

    其实你贴的dump结果很清楚。

    【讨论】:

      【解决方案3】:

      响应是一个数组。

      var_dump($pjs[0]->{'player_name'});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-22
        • 2014-10-01
        • 2013-03-05
        相关资源
        最近更新 更多