SQL SELECT make响应只包含值而不包含列名?

时间:2015-12-17 09:41:23

标签: php mysql sql database

我有这个SQL查询来获取所有用户注册的设备令牌:

select distinct device_token 
from users 
where device_token is not null

这将返回一个数组:

[
    { "device_token": "LONG SRING 1" },
    { "device_token": "LONG SRING 2" },
    { "device_token": "LONG SRING 3" }
]

如何让这个回复看起来像这样?

[
    "LONG SRING 1",
    "LONG SRING 2",
    "LONG SRING 3"
]

我打印出这样的数组只是为了比较:

print_r($response);
print_r(array_values($response));

打印:

Array
(
[0] => Array
    (
        [device_token] => LONG STRING 1
    )

[1] => Array
    (
        [device_token] => LONG STRING 2
    )

[2] => Array
    (
        [device_token] => LONG STRING 3
    )
)

Array
(
[0] => Array
    (
        [device_token] => LONG STRING 1
    )

[1] => Array
    (
        [device_token] => LONG STRING 2
    )

[2] => Array
    (
        [device_token] => LONG STRING 3
    )
)

array_values()不会改变任何东西:(

3 个答案:

答案 0 :(得分:3)

使用array_value仅从关联数组中获取值

array_values($array);

答案 1 :(得分:0)

您可以使用循环手动完成..

$json = '[{"device_token":"LONG SRING 1"},{"device_token":"LONG SRING 2"},{"device_token":"LONG SRING 3"}]';
    $json = json_decode($json, true);
    $result = array();
    foreach($json as $row){
        $result[] = $row['device_token'];
    }
    echo json_encode($result);

现在你将以这种格式得到答复......

["LONG SRING 1","LONG SRING 2","LONG SRING 3"]

答案 2 :(得分:0)

我最终这样做了:

if (PF::is_multi($token)) {
    $temp = [];
    foreach (array_values($token) as $value)
        array_push($temp, array_values($value)[0]);
    $token = $temp;
}