PHP为JSON输出创建多维数组

时间:2015-11-04 04:41:09

标签: php json

我甚至觉得很难受,因为我一直在尝试理解和理解其他人的例子,这就是我想要完成的事情

{
  "field": [
    {
      "appid": 0,
      "page": 0,
      "fieldname": "Sweet",
      "value": "Tammy Howell"
    },
    {
      "appid": 1,
      "page": 1,
      "fieldname": "Cecilia",
      "value": "Shana Jordan"
    },
    {
      "appid": 2,
      "page": 2,
      "fieldname": "Merritt",
      "value": "Copeland Pena"
    }
  ]
}

我需要能够在执行SQL SELECT语句时使上述JSON输出发生

这是我的currentCode

$x = 0;
$userFieldsResult = mysqli_query($database_id, "SELECT * FROM theDB.DynamicFields ORDER BY Page, Priority") or die (mysqli_error($database_id));

        if (mysqli_num_rows($userFieldsResult)<=0)
            {
                echo "nothing found";
                exit;
            } else 
            {
                while($row = mysqli_fetch_array($userFieldsResult))
                {
                    $userFields[$x]['appid'] = $row['appid'];
                    $userFields[$x]['page'] = $row['page'];
                    $userFields[$x]['fieldname'] = $row['fieldname'];
                    $userFields[$x]['value'] = $row['value'];

                    $x++;
                }
                echo json_encode($userFields);
                exit;
            }

echo json_encode($userFields);

这通常是我刚刚输出json所以它们每个只是1个数组循环的一部分,但我试图了解如何创建更多&#34;深入&#34; JSON数组,因此在列出信息之前它们具有特定的标识符。

  [
    {
      "appid": 0,
      "page": 0,
      "fieldname": "Sweet",
      "value": "Tammy Howell"
    },
    {
      "appid": 1,
      "page": 1,
      "fieldname": "Cecilia",
      "value": "Shana Jordan"
    },
    {
      "appid": 2,
      "page": 2,
      "fieldname": "Merritt",
      "value": "Copeland Pena"
    }
  ]

在我的例子中,我只想拥有&#34; field&#34;成为&#34;鞋帮&#34;包含所有信息的数组的一部分,如上例所示。

2 个答案:

答案 0 :(得分:4)

您需要将field作为父数组添加到数组中。

改变
echo json_encode($userFields);

$json = array('fields' => $userFields);
echo json_encode($json);

答案 1 :(得分:1)

在此特定配置中,您将返回一个具有属性的对象,其属性的值可能是数组。

所以你应该做的是在PHP中创建一个stdClass对象,并为它分配一个&#34; field&#34;的属性。这是一个空数组。然后你可以进入这个数组栈。

$obj = new stdClass();
$obj->fields = array();
while(....){
    $obj->fields[$x]['appid'] = 
    $obj->fields[$x]['appid'] = $row['appid'];
    $obj->fields[$x]['page'] = $row['page'];
    $obj->fields[$x]['fieldname'] = $row['fieldname'];
    $obj->fields[$x]['value'] = $row['value'];
}

现在你可以对对象进行json编码并将其返回。

echo json_encode($obj);