非常基本的问题,但无法找到解决方案。
在一个包含一些值的表中,我尝试在一列中存储一个数组(int [])并检索它。存储和搜索工作正常但如果我选择它我会在php中将其作为字符串。
表周
col id (int) = 1
col days (int[]) = {1,1,1,1,1,0,0}
PHP
$query = SELECT id, days, manyother FROM week //array_to_json(days) does the same result
$pdo->setAttribute( PDO::ATTR_CASE, PDO::CASE_NATURAL );
$result = $pdo->query($query);
$test = $result->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($test)
返回:
id: 1
days: "[1,1,1,1,1,0,0]"
manyother: ""
我确定我只想念json_encode / decode 编辑:它不受json_encode的影响,我对它进行了调整,之后返回的值就像'[1,1,1,1,1,0,0]'。
编辑2:找到一个有效的解决方案,但是加载时间增加了15倍:D所以问题仍然是开放的,但我现在有一个解决方法。
foreach($test as $key => $value){
$test[$key]['days'] = json_decode($value['days']);
}
答案 0 :(得分:1)
选择数组时,您可以破解显示数组的方式:
t=# select json_build_array(array[1,2,3,4])->0;
?column?
-----------
[1,2,3,4]
(1 row)
应该通过php然后使用eval轻松评估它。甚至可以在整个数据集上json_agg
,然后是eval:
t=# select json_agg(s162) from s162;
json_agg
[{"i":0,"a":[1,2,3,4]},
{"i":1,"a":[1,4]}]
(1 row)
Time: 0.281 ms