2016-03-29 58 views
-1

我都存儲在一個PHP文件這樣的多陣列:訪問多個JSON數組從一個文件中的PHP

$animals = array('cat', 'dog', 'bear', 'tiger'); 
$house = array('couch', 'tv', 'chair', 'table', 'lamp'); 

我從PHP accesing這是這樣的:

$animals[0] ---> returns cat 
$house[1] ---> returns tv 

然而我需要將所有這些轉換爲JSON並將其存儲在外部文件中。 我試着這樣做:

{"animals":["cat", "dog", "bear", "tiger"]}, 
{"house":["couch", "tv", "chair", "table", "lamp"]} 

然後我的PHP是這樣的

$json = file_get_contents('data/default.json'); 

$array = json_decode($json, true); 

然而,當我試圖從這個數組呼應soemething,要麼給我一個錯誤或只是一個空白屏幕。

我試過多種方法:

$array["animals"][0] 
$array[0][0] 

我不知道是不是我的問題的JSON格式或我accesing它也許我不會將其轉換爲一個數組的方式。有人可以解釋這應該怎麼辦?

+1

可你'的var_dump($陣列)'? –

+0

@PrafullaKumarSahu:是的首先檢查'print_r($ array);'或'var_dump($ array);' – devpro

+2

爲什麼不把json_encode存儲到文件之前? – naneri

回答

1

你有這些數組:

$animals = array('cat', 'dog', 'bear', 'tiger'); 
$house = array('couch', 'tv', 'chair', 'table', 'lamp'); 

有了這個代碼:

$json = json_encode(array('animals'=>$animals,'house'=>$house)); 
echo $json; 

你將獲得此JSON:

{"animals":["cat","dog","bear","tiger"],"house":["couch","tv","chair","table","lamp"]} 

有了這個代碼:

$json = json_encode(array(array('animals'=>$animals),array('house'=>$house))); 
echo $json; 

你將獲得此JSON:

[{"animals":["cat","dog","bear","tiger"]},{"house":["couch","tv","chair","table","lamp"]}] 

當你從一個數組開始,使用內置的功能json_encode獲取有效JSON的更好方法。

+0

我認爲這是我需要的。之後,如何通過'json_decode'逐一訪問它們。 –

+0

用'json_decode'試試看結構。順便說一句,在第一個例子中,你可以通過'$ decodedJson->動物'來訪問它,在第二個例子中可以通過'$ decodedJson [0] - >動物'來訪問它。如果你的主鍵是獨特的(動物,房屋等),我建議你第一個例子。 – fusion3k

+0

謝謝。它現在有效。看起來我的JSON起初是無效的。那是我的問題。 –

1

animals列表..."tiger"]}, <--後的逗號表示這兩個列表是我們在您發佈的JSON中沒有看到的較大結構的一部分。

試着改變你的JSON到:

{ 
    "animals": ["cat", "dog", "bear", "tiger"], 
    "house": ["couch", "tv", "chair", "table", "lamp"] 
} 

測試:

$json = '{"animals": ["cat", "dog", "bear", "tiger"],"house": ["couch", "tv", "chair", "table", "lamp"]}'; 
$array = json_decode($json, true); 
echo $array1["animals"][0]."\n"; 
echo $array1["animals"][1]."\n"; 
echo $array1["house"][1]."\n"; 

/* 
Output: 

cat 
dog 
tv 
*/ 
0

你好,我想你應該嘗試這種方式

{ 
    "animals": ["cat", "dog", "bear", "tiger"], 
    "house": ["couch", "tv", "chair", "table", "lamp"] 
}