从MySQL结果数组为jQuery数据表创建一个JSON数组

时间:2017-02-15 00:35:58

标签: php json codeigniter

我有一个mySQL结果数组,例如。如果数组是“$ getSessionList”

Array(

[0] =>array(

     [name] => azure

          )
[1] =>array(

     [name] => maroon

          )
)

我的目标是将此数组转换为此格式的JSON数组:

{"data": [["azure"],["maroon"]]}

我已使用此PHP代码获取结果:

$tableData = new stdClass();
$tableData->data = array();

if (count($getSessionList) > 0) {

for ($i = 0; $i < count($getSessionList); $i ++) {
    $getSessionListRecord = $getSessionList[$i];

    $data = new stdClass(); 
    $data->name   = $getSessionListRecord['name'];


    array_push($tableData->data, $data);

     }
}

echo json_encode($tableData);

?>

上述代码产生以下结果:

{"data": [["name":"azure"],["name":"maroon"]]}

我想要这个JSON格式数组:

{"data": [["azure"],["maroon"]]}

但我现在的代码给了我这个JSON数组:

{"data": [["name":"azure"],["name":"maroon"]]}

我不希望JSON数组中的键“name”。

如何实现这一目标,我们将非常感谢您的任何帮助。

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

$tableData = new stdClass();
$tableData->data = array();

if (count($getSessionList) > 0) {

for ($i = 0; $i < count($getSessionList); $i ++) {
    $getSessionListRecord = $getSessionList[$i];

    $data = array($getSessionListRecord['name']);


    array_push($tableData->data, $data);

     }
}

echo json_encode($tableData);

?>

目前,您正在使用此代码

创建新的PHP对象

$data = new stdClass();

然后您使用以下行将数据添加到密钥名称

$data->name = $getSessionListRecord['name'];

只需将数据放入一个空数组,并将其推送到另一个数组,转换为JSON时就不会有 name 键。

答案 1 :(得分:1)

试试这个:

$tableData = array();
$tableData['data'] = array_map(function($session) {
    // it's a separate session item inside the session_list
    return array($session['name']);
}, $getSessionList);

// any associative array converts to js-object
// it doesn't matter is that an associative array or std-object
echo json_encode($tableData);