所以我想做的是创建一个php文件,该文件将从数据库中获取一些信息并返回给我一个json数组,以便我可以将其解析为另一个php文件,如下所示:
$json = file_get_contents("generatejson.php");
$data = json_decode($json, true);
已编码并回显的json是100%有效的。 如果我输入直接在文件中得到的json字符串,就像这样:
{"article_1":{"label":"myfirstvalue","oT":"myfirsttext"},"article_2":{"label":"myfirstvalue","oT":"myfirsttext"},"article_3":{"label":"myfirstvalue","oT":"myfirsttext"},"article_4":{"label":"myfirstvalue","oT":"myfirsttext"}}
解析工作正常。
但是,如果我尝试从php这样回显它:
$data = array(
'article_1' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_2' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_3' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_4' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
);
echo json_encode($data);
解析无效,从php返回的json字符串有效。 我应该怎么做才能使其正常工作。谢谢
答案 0 :(得分:0)
这是因为file_get_contents()
返回文件的内容,因此您在此处执行的操作不是运行generatejson.php
,而是将代码读入变量。因此,您实际上是将$json
的值设置为字符串:
$data = array(
'article_1' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_2' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_3' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_4' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
);
echo json_encode($data);
(这当然不是有效的JSON)。
我相信您要尝试执行的是运行代码并将输出分配给$json
,在这种情况下,您将需要require()
:
generatejson.php
:
<?php
$data = array(
'article_1' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_2' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_3' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
'article_4' => array(
'label' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
);
return json_encode($data);
test.php
:
<?php
$json = require("generatejson.php");
$data = json_decode($json, true);
print_r($data);
运行此命令时,将得到输出:
Array
(
[article_1] => Array
(
[label] => myfirstvalue
[oT] => myfirsttext
)
[article_2] => Array
(
[label] => myfirstvalue
[oT] => myfirsttext
)
[article_3] => Array
(
[label] => myfirstvalue
[oT] => myfirsttext
)
[article_4] => Array
(
[label] => myfirstvalue
[oT] => myfirsttext
)
)
我想你在追求什么?