在PHP中从一个文件访问多个json数组

时间:2016-03-29 11:28:06

标签: php arrays json

我有一个存储在PHP文件中的多个数组,如下所示:

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

我是这样从PHP访问的:

$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格式化还是我访问它的方式,或者我没有将它转换为数组。有人可以解释一下应该怎么做?

3 个答案:

答案 0 :(得分: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
*/

答案 1 :(得分: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 的更好方法。

答案 2 :(得分:0)

您好我认为您应该尝试这种方式

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