PHP为JSON输出创建多维数组


PHP Create Multidimension Array for JSON output

即使问我也觉得很糟糕,因为我一直在努力理解和理解其他人的例子——这就是我正在努力实现的

{
  "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输出

这是我当前的代码

$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个数组循环的一部分,但我正在努力了解如何创建更"深入"的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"
    }
  ]

在我的例子中,我只想让"字段"成为数组的"上部",它保存了上面例子中显示的所有信息。

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

的变化

echo json_encode($userFields);

进入

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

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

因此,实际应该做的是在PHP中创建一个stdClass对象,并为其分配一个空数组"field"属性。然后你就可以推入这个数组堆栈了。

$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);