如何在标识符以@符号开头时访问php中的对象?

问题描述:

我有一个JSON对象,看起来像这样:如何在标识符以@符号开头时访问php中的对象?

{#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

+0

您可以尝试通过'$ VAR [ '@身份证']'访问它。如果这有效,我会将它添加为您的答案。 – cramopy

+1

为什么json属性的前缀是“@”?这并非无效,但有什么意义? – Gordon

+0

@戈登不知道为什么客户开发人员这样做。这只是我从客户端服务器获得的响应,并且应该处理它。 – kevinabraham

保持元素名称像$test一个变量和使用$var->$test得到这样

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

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

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

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

+0

谢谢@ user2486。 '$ arr - > {'@ id'}'解决了我的问题。 – kevinabraham

试试像这样:

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

使用此:

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