Php返回结构复杂的json


Php return json with complex structure

我是一名新的PHP开发人员。我正在使用PHP开发rest服务器。现在我需要返回到我的客户端json,其结构如下:

{
"id":"45",
"login":"OlegRy",
"image":"no_avatar.png",
"fon":"",
"messages":[
    {
        id:1,
        text:hi
    },
    {
        id:2,
        text:how are u?
    }
],"subs_login":[]}

请告诉我,实现它的方法

您可以在PHP 中使用array()创建该数据结构

$out = array("id" => "45",
  "login" => "OlegRy",
  "image" => "no_avatar.png",
  "fon" => "",
  "messages" => array(
    array("id" => 1,
          "text" => "hi"
      ),
    array(
      "id" => 2,
      "t)xt" => "how are u?"
      )
  ),
  "subs_login" => array()
  );
echo json_encode($out);

附加说明:

如果您正在使用输出缓冲,我建议在回显json之前使用ob_clean();

根据前端所需的数据格式,您可能希望将JSON_NUMERIC_CHECK与JSON_encode()一起使用,以防止整数转换为字符串。

echo json_encode($out, JSON_NUMERIC_CHECK);

您可能还希望在回显json后立即exit();,以防止任何进一步的输出,这取决于您的PHP体系结构。

这个简单的代码:

$data = array(
    'id' => 45,
    'login' => 'OlegRy',
    'image' => 'no_avatar.png',
    'fon' => '',
    'messages' => array(
        array(
            'id' => 1,
            'text' => 'hi',
        ),
        array(
            'id' => 2,
            'text' => 'how are u?',
        ),
    ),
    'subs_login' => array(
        // I dont't know what to put here...
    ),
);
echo json_encode($data);