【问题标题】:Creating JSON array of arrays with keys from MySQL into sing JSON object使用 MySQL 中的键创建 JSON 数组数组来唱 JSON 对象
【发布时间】:2014-10-17 13:49:28
【问题描述】:

我试图在一个 JSON 对象的循环中创建一个数组数组,但它返回的是两个对象。如果我用一个键删除数组周围的数组,它可以工作,但我需要这个键。

这是我正在寻找的格式:

$shop = array( "1408842145690" => array( id => "1408842145690", 
                                 code => "1",
                                 title => "zdfdsf",
                                 date => "2014-08-01",
                                 description => "fghgf"
                                ),
        "1408840099517" => array( id => "1408840099517", 
                                 code => "1",
                                 title => "test",
                                 date => "2014-08-01",
                                 description => "this is a test"
                                )
         );echo json_encode($shop);

这是我正在使用的代码

$query = " SELECT * FROM todolist ";
if ($result = mysqli_query($mysqli,$query)) {
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $tasks = array(
                       $row['task_id'] => array( 'id' => $row['task_id'],
                                           'code' => $row['task_statusbox'],
                                           'title' => $row['task_title'],
                                           'date' => $row['task_date'],
                                           'description' => $row['task_description']
                                          )             
                    );  
        $alltasks[] = $tasks;
    }
    echo json_encode($alltasks);
    /* free result set */
    $result->close();  
}

这是我得到的结果:

{"1408842145690":{"id":"1408842145690","code":"1","title":"zdfdsf","date":"2014-08-01 00:00:00","description":"fghgf"}},{"1408840099517":{"id":"1408840099517","code":"1","title":"test","date":"2014-08-01 00:00:00","description":"this is a test"}}

这就是我要找的结果

{"1408842145690":{"id":"1408842145690","code":"1","title":"zdfdsf","date":"2014-08-01","description":"fghgf"},"1408840099517":{"id":"1408840099517","code":"1","title":"test","date":"2014-08-01","description":"this is a test"}}

【问题讨论】:

    标签: php mysql json multidimensional-array key


    【解决方案1】:

    将 while 循环的内容替换为以下内容:

    $tasks = array('id' => $row['task_id'],
                 'code' => $row['task_statusbox'],
                 'title' => $row['task_title'],
                 'date' => $row['task_date'],
                 'description' => $row['task_description']
             );            
    $alltasks[$row['task_id']] = $tasks;
    

    编辑:我测试了上述内容,它确实有效。这是完整的替换代码...尝试复制/粘贴。

    $query = " SELECT * FROM todolist ";
    if ($result = mysqli_query($mysqli,$query)) {
        while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
            $tasks = array('id' => $row['task_id'],
                'code' => $row['task_statusbox'],
                'title' => $row['task_title'],
                'date' => $row['task_date'],
                'description' => $row['task_description']
            );            
            $alltasks[$row['task_id']] = $tasks;
        }
        echo json_encode($alltasks);
        /* free result set */
        $result->close();  
    }
    

    【讨论】:

    • 这给了我数组周围的括号并且不起作用。{"1408842145690":[{"id":"1408842145690","username":"seanflores86","code":"1" ,"标题":"zdfdsf","日期":"2014-08-01 00:00:00","描述":"fghgf"}],"1408840099517":[{"id":"1408840099517", "username":"seanflores86","code":"1","title":"test","date":"2014-08-01 00:00:00","description":"这是一个测试"}]}
    • 听起来你在那里留下了一个额外的数组(...)标签。
    • 能否详细说明如何解决?
    • 这解决了您的问题吗?如果是这样,将其标记为正确答案怎么样?
    猜你喜欢
    • 2016-11-18
    • 2018-07-03
    • 2013-08-28
    • 2013-07-22
    • 2020-05-10
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多