gpt4 book ai didi

javascript - 获取一个字符串格式的 MySQL 存储数组并转换为 JSON 对象中的数组

转载 作者:行者123 更新时间:2023-11-29 02:20:55 25 4
gpt4 key购买 nike

我有一个数组存储在 mysql 表中,如下所示:

[3,5,6,7,8]

当我选择它时,在PHP中将其编码为JSON,然后将其解析为javascript对象,而不是成为一个数组,它只是成为一个字符串“[3,5,6,7,8]”。我知道不可能将它作为数组存储在单个字段中,所以..我该怎么做才能正确转换为数组而不是字符串?

我当前的代码:

test = JSON.parse('[{"id":43,"incidence":"[0,3,6,7]"}]')

我可以通过删除字符串上的 "来解决它,但是 mysql 将其与字符串一起返回,php 使用引号进行编码,而 javascript 则使用引号进行解析。所以基本上,有没有办法在此过程中将其删除?

最佳答案

问题在于在将数组转换为 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>

希望这对您有所帮助。

关于javascript - 获取一个字符串格式的 MySQL 存储数组并转换为 JSON 对象中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31973214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com