2016-08-27 170 views
0

我知道這裏有很多類似的問題,但我一直遇到的問題是其中設置其他json文件數組的方法與我的不同。將Json數據返回到PHP變量

我想要做的應該只是一個簡單的過程,但由於我不熟悉json數組,我是其他的東西,解決方案完全避開我。

我只想將數據顯示在本地的json文件中,併爲每個返回的項目創建PHP變量。

JSON文件很簡單,看起來像這樣...

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

它總是會包括這些只是4個項目。然後我使用下面的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

爲什麼不能簡單地定義,如果它總是隻有4:

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

用php你不能用變量來命名另一個變量。 但是,您可以使用關聯數組來執行此操作。

true in json_decode($data, true);已經以關聯數組的形式返回數據。爲了訪問titleOne的價值,你只需要做$json['titleOne']。這會給你Foo

+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 

你的情況:

你不必來包裝陣列的JSON數據並進行2個循環:

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

您可以創建動態變量這樣:

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