【问题标题】:How to access object in php when the identifier starts with a @ symbol?当标识符以@符号开头时如何访问php中的对象?
【发布时间】:2018-01-20 17:57:24
【问题描述】:

我有一个如下所示的 json 对象:

{#119130 ▼
  +"@id": "1EBEF5DA"
  +"@name": "The"
  +"@renewal": "xxxxx"
  +"@languages": "Eng"
}

当标识符以@ 符号开头时,如何访问 php 中的 JSON 数据?

例如尝试使用$var->@id 访问它会导致错误:

Parse error: syntax error, unexpected '@', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'

我尝试了$var->id,但结果是Undefined Property

【问题讨论】:

  • 您可以尝试通过$var['@id']访问它。如果可行,我会将其添加为您的答案。
  • 为什么json属性要以@为前缀?不是无效,但有什么意义呢?
  • @Gordon 不确定客户开发人员为什么这样做。这只是我从客户端服务器得到的响应,应该处理它。

标签: php json laravel escaping laravel-5.4


【解决方案1】:

将元素名称保存在一个变量中,如$test,并使用$var->$test 来获取这样的值

 <?php
    $arr = json_decode(json_encode(["@id"=> "1EBEF5DA"]));
    $obj = '@id';
    print_r($arr->$obj);
 ?>

演示:https://eval.in/844662

或者另一种方式是print_r($arr-&gt;{'@id'});

演示:https://eval.in/844662

【讨论】:

  • 谢谢@user2486。 $arr-&gt;{'@id'} 解决了我的问题。
【解决方案2】:

试试这样:

$idFieldName = '@id';
$var->$idFieldName;

【讨论】:

    【解决方案3】:

    使用这个:

    $a = '{"@id":"123","@idx":"2232"}';
    $b = json_decode($a);
    print_r($b);
    echo $b->{'@id'};
    

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 2021-01-14
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多