使用php创建一个精确的json文件

时间:2015-07-31 14:16:30

标签: php json

我需要在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(一)。

如何获得此输出?

2 个答案:

答案 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,最好的方法如下:

  • 使用实际数据创建数组
  • 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),以传递数据。