2016-08-27 9 views
0

私はここにこれと似たような質問がたくさんあることを知っていますが、私が実行し続ける問題は、他のjsonファイル配列が設定されている方法が私と同じではないということです。JsonデータをPHP変数に戻す

私がしようとしているのは、単純なプロセスでなければなりませんが、私はjsonアレイに精通していないので、私は他のものです。

ローカルのjsonファイルでデータ表示を行い、返される各アイテムに対してPHP変数を作成したいだけです。

JSONファイルは簡単で、次のようになります...それは常にちょうどこれらの4つの項目から構成されます

[ 
    { 
     "titleOne": "Foo", 
     "textOne": "Bar", 
     "titleTwo": "Foo", 
     "textTwo": "Bar" 
    } 
] 

。次に、私は次のPHPを使用してファイルを読み取り、デコードします。

$data = file_get_contents ('./data.json'); 
$json = json_decode($data, true); 
foreach ($json as $key => $value) { 
    foreach ($value as $key => $val) { 
      echo $key . '====>' . $val . '<br/>'; 
    } 
} 

しかしこれは単にデータを出力します。これらの4つの項目のそれぞれを変数にしようとしています。例...

$titleOne 
$textOne 
$titleTwo 
$textTwo 

...変数をフォームで使用できるようにします。

私はこれと多くの似たような疑問を見つけましたが、jsonデータは常に設定が異なるため、結果としてエラーが発生します。

+0

フォームの配列エントリにアクセスするだけです。 '$ json [0] ['titleOne']' – jedifans

+0

私はjson配列でそれを学んでいません。どうしたらいいのか説明できますか? – user2284703

+1

'$ json [0] ['titleOne']' – smarx

答えて

3

なぜ単純に定義されていない:

$titleOne = $json[0]['titleOne']; 
$textOne = $json[0]['textOne']; 
$titleTwo = $json[0]['titleTwo']; 
$textTwo = $json[0]['textTwo']; 
0

phpでは、変数を使用して別の変数の名前を付けることはできません。 ただし、これを行うために連想配列を使用することはできます。

truejson_decode($data, true);は、すでに連想配列の形式でデータを返します。 titleOneの値にアクセスするには、$json['titleOne']を実行します。これはあなたにFooを与えるでしょう。それは常に、わずか4かどう

+0

'$$ varname'についてですか?または '$ {'title'}'? –

+0

申し訳ありませんが、私はあなたが何を求めているのかよく分かりません。 – Aaron

+0

あなたの答えの最初の文は完全に間違っています。 –

3

あなたは変数に要素を抽出するためにlistを使用することができます。それは数値配列でのみ機能することに注意してください。

$json = '[ 
    { 
     "titleOne": "Foo", 
     "textOne": "Bar", 
     "titleTwo": "Foo", 
     "textTwo": "Bar" 
    } 
]'; 

$json = json_decode($json, true); 
foreach ($json as $object) { 
    list($titleOne, $textOne, $titleTwo, $textTwo) = array_values($object); 
} 
0

phpでは、変数を使用して別の変数を指定できます。 だけVariable variables使用:

$a = 'var'; 
$$a = 'hello world'; 
echo $var; 
// output : hello word 

をお使いの場合:あなたの動的変数を作成することができ

{ 
    "titleOne": "Foo", 
    "textOne": "Bar", 
    "titleTwo": "Foo", 
    "textTwo": "Bar" 
} 

あなたは配列にあなたのJSONデータをラップし、2つのループを作る必要はありませんこのように:

$data = file_get_contents ('./data.json'); 
$json = json_decode($data, true); 
foreach ($json as $key => $val) { 
    $$key = $val; 
} 
echo $titleOne; 
// output : Foo 
関連する問題