我需要在PHP中编写以下输出:
var data = {“count”:1, “elements”:[{“id”:1,“title”:“title123”,“url”:“x123.php”,“file_url”:“x124.jpg”}]}
我试过了:
$txt = 'var data = { "count": 1,"elements": ';
$txt = $txt + '[{"id": 1, "title": "title123", "url": "x123.php", "file_url": "x124.jpg"}';
$something = json_encode($txt);
echo $something;
//
$something = print_r($txt);
echo $something;
//
$something = print_r(json_decode($txt));
echo $something;
//
ob_start;
var_dump($txt);
$something = ob_get_contents();
ob_end_clean();
echo $something;
我也试过这个:
$txt = '?var ?data ?= { "count": 1,"elements":';
for ($x = 0; $x <= strlen($txt); $x++) {
$neso = substr($txt,$x,1);
if ($neso != "?") {
echo "+" + $neso + "+" + $x;
}
}
不幸的是我无法得到任何解决方案。我得到的只是0(零)或1(一)。
如何获得此输出?
答案 0 :(得分:4)
这不是你如何生成json。 PHP绝对不知道Javascript是什么 - 就PHP而言,它只是纯文本。当您执行$txt = 'var...'
并对其进行编码时,您将生成在php中生成的 STRING 的json表示,这意味着您的json将成为
"var data = {\"count\": etc...}"
现在你 ALREADY 的JSON已经转义,而且不再是json - 它只是一个明文字符串。
你想要的更像是:
$php_array = array(
'count' => 1,
'elements' => array(
array('id' => 1, 'title' => etc...)
)
)
$javascript = 'var txt = ' . json_encode($php_array) . ';';
请注意,echo "+" + $neso + "+" + $x;
完全没用。 PHP中的+
做了数学加法。您正在尝试进行字符串连接,运算符为.
。
答案 1 :(得分:2)
了解数组,对象的结构,以及如何用JSON编写相同的东西。
要使用PHP创建真正的json,最好的方法如下:
那将是什么&#34;回应&#34;如果你尝试,将是第一个{}中的内容。
我会先做:
$data = array(
'count' => 1,
'elements' => array(
'id' => 1,
'title' => 'title123',
'url' => 'x123.php',
'file_url' => 'x124.jpg',
),
);
然后:echo json_encode($ data);或者返回$ json_encode($ data),以传递数据。