是这个有效的json数组使用PHP

时间:2010-03-30 01:26:04

标签: php syntax json

我需要转换其他人完成的代码,才能在我的mvc模型中工作

我正在使用像EOD这样的一些功能,我不明白。这仍然适用于班级吗?

首先,我的问题集中在json输出上。

旧代码不使用php json_encode函数,而是像这样直接输出

?>
{
        "username": "<?php echo $_SESSION['username'];?>",
        "items": [
            <?php echo $items;?>
        ]
}

<?php

我会这样做,但我需要确定它适用于项目部分

header('Content-type: application/json'); 

$output = array("username"=> isset( $_SESSION['username'] ) ? $_SESSION['username'] : "?",
                "items"=>$items
                );
$this->content = json_encode($output);

这是关于如何制作$项目的一些背景知识。 项目存储如下:

$_SESSION['chatHistory'][$_POST['to']] .= <<<EOD
                       {
            "s": "1",
            "f": "{$to}",
            "m": "{$messagesan}"
       },
EOD;

并将它放在$ items变量中,如下所示

$items = '';


if ( !empty($_SESSION['openChatBoxes'] ) ) {
        foreach ( $_SESSION['openChatBoxes'] as $chatbox => $void ) {
            $items .= $this->chatBoxSession($chatbox);
        }
    }

//The chatBoxSession() function takes an item from the  $_SESSION['chatHistory'] array and returns it.

我希望这有点清楚吗? php手册警告说,在某些情况下,你没有获得数组输出,而是获得一个对象。所以,使用EOD语法,我不太确定。

如果我知道有些事情正在做他们想要的事情并给出正确的输出,那可以节省我一些时间。

谢谢,理查德

1 个答案:

答案 0 :(得分:1)

这称为 heredoc 。它就好像里面的所有文本都是单个字符串一样。如果您尝试生成JSON,请不要使用它。相反,请使用这样的事实:语句在完成分号之前不会完成:

$somevar = {
  "s": "1",
  "f": "{$to}",
  "m": "{$messagesan}"
};