Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json_编码的格式化数组_Php_Arrays_Json - Fatal编程技术网

Php json_编码的格式化数组

Php json_编码的格式化数组,php,arrays,json,Php,Arrays,Json,我已经寻找了几天,试图拼凑出我的解决方案,但仍在挣扎。我正在努力使用一些php,并将其转换为我想要的json编码格式,以便使用knockout.js 我有一个db,看起来像这样: | id | name | value | | 1 | taskName | First Task | | 1 | taskDetail | Enter your first task | | 1 | taskList | Very

我已经寻找了几天,试图拼凑出我的解决方案,但仍在挣扎。我正在努力使用一些php,并将其转换为我想要的json编码格式,以便使用knockout.js

我有一个db,看起来像这样:

| id | name       | value                  |
| 1  | taskName   | First Task             |
| 1  | taskDetail | Enter your first task  |
| 1  | taskList   | Very Important         |
| 2  | taskName   | Second Task            |
| 2  | taskDetail | Enter your second task |
| 2  | taskList   | Important              |
[
  {
    "id": "1",
    "taskName": "First Task",
    "taskDetail": "Enter your first task",
    "taskList": "Very Important"
  },
  {
    "id": "2",
    "taskName": "Second Task",
    "taskDetail": "Enter your second task",
    "taskList": "Important"
  }
]
while ($row = mysql_fetch_assoc($result))
{           
    if (!isset($results[$row['id']])) $results[$row['id']] = array();
    $results[$row['id']][$row['name']] = $row['value'] );
}
我试图用json_encode将此响应发送到我的站点,如下所示:

| id | name       | value                  |
| 1  | taskName   | First Task             |
| 1  | taskDetail | Enter your first task  |
| 1  | taskList   | Very Important         |
| 2  | taskName   | Second Task            |
| 2  | taskDetail | Enter your second task |
| 2  | taskList   | Important              |
[
  {
    "id": "1",
    "taskName": "First Task",
    "taskDetail": "Enter your first task",
    "taskList": "Very Important"
  },
  {
    "id": "2",
    "taskName": "Second Task",
    "taskDetail": "Enter your second task",
    "taskList": "Important"
  }
]
while ($row = mysql_fetch_assoc($result))
{           
    if (!isset($results[$row['id']])) $results[$row['id']] = array();
    $results[$row['id']][$row['name']] = $row['value'] );
}
以下是我到目前为止的情况:

$user = 1;

$task_sql = "
    SELECT *
    FROM `li_id`
    INNER JOIN `li_details`
    ON li_id.id = li_details.id
    WHERE li_id.user = '" . $user . "'";


$result = mysql_query($task_sql, $con);
$results = array();

while ($row = mysql_fetch_assoc($result)) {
    $results[] = array($row['name'] => $row['value']);
}

echo json_encode($results);
答复:

[
  {
    "taskName": "First Task"
  },
  {
    "taskDetail": "Enter first task in application."
  },
  {
    "taskList": "Important"
  },
  {
    "taskName": "Second Task"
  },
  {
    "taskDetail": "Enter second task in application."
  },
  {
    "taskList": "Very Important"
  }
]

问题是,我无法找出如何按id分组到单独的数组中。我试过好几种方法,但都不走运。任何指向其他线程的提示或方向都将非常棒。谢谢

像这样的东西怎么样:

| id | name       | value                  |
| 1  | taskName   | First Task             |
| 1  | taskDetail | Enter your first task  |
| 1  | taskList   | Very Important         |
| 2  | taskName   | Second Task            |
| 2  | taskDetail | Enter your second task |
| 2  | taskList   | Important              |
[
  {
    "id": "1",
    "taskName": "First Task",
    "taskDetail": "Enter your first task",
    "taskList": "Very Important"
  },
  {
    "id": "2",
    "taskName": "Second Task",
    "taskDetail": "Enter your second task",
    "taskList": "Important"
  }
]
while ($row = mysql_fetch_assoc($result))
{           
    if (!isset($results[$row['id']])) $results[$row['id']] = array();
    $results[$row['id']][$row['name']] = $row['value'] );
}

然后在对其进行json_编码后,所有字段都嵌套在其id中

如果表结构(数据库)不正确,是否将一个条目分成3?为何ID应该是自动递增的。为什么表结构是这样的?创建一个具有id、taskName和taskDetail属性的PHP类。在获取循环中创建此类的实例数组。序列化。我有另一个表,在添加新项时自动递增。此表中的id与这些项目相关,因此我知道每个项目应用哪些属性。格式与我发布的略有不同,但这仍然是我所需的魅力所在。非常感谢。以下是供其他人查看的结果:{“1”:{“taskName”:“First Task”,“taskDetail”:“在应用程序中输入第一个Task.”,“taskList”:“重要”},“2”:{“taskName”:“Second Task”,“taskDetail”:“在应用程序中输入第二个Task.”,“taskList”:“非常重要”}