2017-08-12 3 views
2

Ich habe ein Json-Objekt, das wie folgt aussieht:Wie auf Objekt in PHP zugreifen, wenn der Bezeichner mit einem @ -Symbol beginnt?

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

Wie greife ich ein, die JSON-Daten in PHP, wenn die Kennung mit einem @ Symbol beginnt?

Zum Beispiel versuchen, darauf zuzugreifen $var->@id führt zu einem Fehler mit:

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

Ich versuchte $var->id aber es ergibt sich eine Undefined Property.

+0

können Sie versuchen, es über '$ var [ '@ id'] Zugriff auf'. Wenn das funktioniert, füge ich es als Antwort für Sie hinzu. – cramopy

+1

Warum würde der JSON-Eigenschaft ein '@' vorangestellt werden? Es ist nicht ungültig, aber was ist der Sinn? – Gordon

+0

@Gordon nicht sicher, warum die Client-Entwickler es so gemacht haben. Dies ist nur die Antwort, die ich vom Client-Server bekomme und verarbeiten sollte. – kevinabraham

Antwort

2

Halten Elementname in einer Variablen wie $test und verwenden $var->$test Wert zu erhalten wie diese

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

Demo: https://eval.in/844662

Oder eine andere Art und Weise ist print_r($arr->{'@id'});

Demo: https://eval.in/844662

+0

Danke @ user2486. '$ arr -> {'@ id'}' löste mein Problem. – kevinabraham

2

Versuchen Sie es so:

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

verwenden:

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