2017-08-12 7 views
2

私はこのようになりますJSONオブジェクトがあります。識別子は@記号で開始したとき、私はPHPでJSONデータにアクセスするにはどうすればよい識別子が@記号で始まる場合、PHPでオブジェクトにアクセスする方法は?

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

を?エラーで$var->@id結果を使用してアクセスしようとして例えば

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

は私が $var->idを試してみましたが、それは Undefined Propertyになります。

+0

あなたは[ 'ID @'] '$するvar'経由でアクセスしてみてください。これがうまくいくなら私はあなたの答えとしてそれを追加します。 – cramopy

+1

なぜjsonプロパティの先頭に '@'が付きますか?それは無効ではありませんが、何がポイントですか? – Gordon

+0

@Gordonはなぜクライアントの開発者がこのようにしたのかわからない。これは私がクライアントサーバーから得た応答であり、それを処理するはずです。 – kevinabraham

答えて

2

$testのように一つの変数に要素名を維持し、この

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

デモのような値を取得するために$var->$testを使用します。https://eval.in/844662

それとも別の方法がprint_r($arr->{'@id'});

デモです:https://eval.in/844662

+0

ありがとう@ user2486。 '$ arr - > {'@ id'}'は私の問題を解決しました。 – kevinabraham

2

次のように試してみてください:

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

これを使用して:

$a = '{"@id":"123","@idx":"2232"}'; 
$b = json_decode($a); 
print_r($b); 
echo $b->{'@id'}; 
関連する問題