我有一个存储在mysql表中的数组,如下所示:
[3,5,6,7,8]
当我选择它时,在PHP中将其编码为JSON,然后将其解析为javascript对象,而不是成为一个数组,它只是变成一个字符串" [3,5,6,7,8] &#34 ;.我知道它不可能将它作为一个数组存储在一个字段中,所以..我能做什么才能正确转换为数组而不是字符串?
我目前的代码:
test = JSON.parse('[{"id":43,"incidence":"[0,3,6,7]"}]')
我可以解决它删除"在字符串上,但是mysql用字符串返回它,php用引号和javascript用引号解析。基本上,有没有办法在这个过程中删除它?
答案 0 :(得分:2)
问题在于如何在将数组转换为JSON之前构建数组。由于您是从数据库中检索这些结果,我假设您正在构建一个多维数组,可能看起来像这样:
$results = array(
array(
"id" => 43,
"incidence" => "[0,3,6,7]"
)
);
因为incidence
是一个字符串,所以在JS中使用它时会给你这些错误。要解决此问题,您需要将该字符串转换为数组。现在,由于您可能有多个结果(因为这些是数据库结果),您需要遍历结果数组并将该字符串转换为如下数组:
foreach ($results as &$row) { // <-- notice the & symbol (Passing by reference)
$no_brackets = trim($row["incidence"], '[]');//if you stored your array as comma delimited value, you would not need this.
$row["incidence"] = explode(',', $no_brackets);
}
最后,使用json_encode
并将其传递给JS。
最终结果:
<?php
foreach ($results as &$row) {
$no_brackets = trim($row["incidence"], '[]');
$row["incidence"] = explode(',', $no_brackets);
}
$json = json_encode($results);
?>
<script>
var obj = JSON.parse('<?= $json ?>');
console.log(obj);
</script>
希望这有帮助。
答案 1 :(得分:0)
你需要做一些小小的工作才能让它发挥作用。
试试这个
<?php
$string = '[3,5,6,7,8]';
$t = str_replace(array('[',']'), '', $string);
$array = explode(',', $t);
echo json_encode($array);
结果是
["3","5","6","7","8"]