这是使用php的有效json数组吗

这是使用php的有效json数组吗,php,syntax,json,Php,Syntax,Json,我需要转换其他人完成的一些代码,以便在我的mvc模型中工作 它使用了一些我不理解的功能,比如EOD。这在课堂上仍然有效吗 首先,我的问题集中在json输出上 旧代码没有使用php json_encode函数,而是像这样直接输出 ?> { "username": "<?php echo $_SESSION['username'];?>", "items": [ <?php echo $items;?>

我需要转换其他人完成的一些代码,以便在我的mvc模型中工作

它使用了一些我不理解的功能,比如EOD。这在课堂上仍然有效吗

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

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

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

<?php
$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.
这是关于$items是如何制作的一些背景资料。 项目的存储方式如下:

$_SESSION['chatHistory'][$_POST['to']] .= <<<EOD
                       {
            "s": "1",
            "f": "{$to}",
            "m": "{$messagesan}"
       },
EOD;
我希望这已经足够清楚了? php手册警告说,在某些情况下,您不会得到数组输出,而是得到一个对象。所以,对于EOD语法,我不是很确定

如果我知道一些事情也在做他们认为应该做的事情,并且给出正确的输出,这可以节省我一些时间


谢谢你,Richard,这被称为heredoc。它的工作原理就像所有的文本都是一个字符串。如果您试图生成JSON,请不要使用它。相反,请使用以下事实,即语句在遇到分号之前不会完成:

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

这被称为heredoc。它的工作原理就像所有的文本都是一个字符串。如果您试图生成JSON,请不要使用它。相反,请使用以下事实,即语句在遇到分号之前不会完成:

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

EOD只是HEREDOC(或NOWDOC)语法,不是吗?类似的东西,但我不是真的很喜欢,我仍然需要阅读php手册页面EOD只是HEREDOC(或NOWDOC)语法,不是吗?类似的东西,但我不是真的很喜欢,我仍然需要阅读php手册页面谢谢,在最后一次结束后添加最后一个逗号,你忘了。但是我是否也在使用正确的方式输出项目。我用json_编码加上笔直的卷发[]本身,还是我必须这样做?你在回答中写的是一个单一的对象,对吗?但是ajax函数需要一个项目数组。这是正确的“items”=>$items还是我需要执行“items”=>array($items)???通常,您创建一个包含线性数组和关联数组的结构,并在该结构上调用
json\u encode()
,将其一次转换为json。你是否需要调用
array()
取决于你想要的结构。哦,该死,我明白你的意思了,如果会话数组中已经包含了现成的对象,我就不能用json\u编码。我必须重新考虑一下这种情况。如果我使用语法$output=Thank,并在最后一个结束卷曲后添加最后一个逗号,那么这是否正确,您忘记了这一点。但是我是否也在使用正确的方式输出项目。我用json_编码加上笔直的卷发[]本身,还是我必须这样做?你在回答中写的是一个单一的对象,对吗?但是ajax函数需要一个项目数组。这是正确的“items”=>$items还是我需要执行“items”=>array($items)???通常,您创建一个包含线性数组和关联数组的结构,并在该结构上调用
json\u encode()
,将其一次转换为json。你是否需要调用
array()
取决于你想要的结构。哦,该死,我明白你的意思了,如果会话数组中已经包含了现成的对象,我就不能用json\u编码。我必须重新考虑一下情况。如果我使用语法$output,那么这是否正确=