我有一段代码,它在 PHP 代码中写入 JS 对象数组(从 mysql 数据库检索),如下所示:
echo "var tab = [\n";
while($row = mysql_fetch_row($resultat)){
$numero = $row[0];
$notes = $row[1];
echo "{\n";
echo "numero:\"".$numero."\",";
echo "notes:\"".$notes."\" ";
echo "\n},";
}
echo "\n]";
(我简化了代码......在实际代码中,最后一个逗号被删除)
问题是:如果我在 $notes 中添加新行,它会破坏 JS 数组并生成 JS 解析错误,因为新行在 JS 代码中被写为真正的新行,而不是 "\n “应该如此。
例如,文本
"foo bar
foo bar"
应该写在JS数组中:
"foo bar\nfoo bar".
我想做的就是写“\n”来代替实际的新行。
我尝试过这个:
$notes = str_replace("\n", '\n', $row[1]);
但是没有成功。 有什么想法吗?
最佳答案
将 PHP 数组转换为 JSON 的最佳方法是使用 json_encode
功能:
$rows = [];
while ($row = mysql_fetch_assoc($resultat)) {
$rows[] = $row;
}
echo json_encode($rows);
我不记得是否有更简单的方法来通过旧的 mysql 函数获取整个结果集。我建议您使用 PDO 而不是 mysql_query
, mysql_fetch_row
等:http://www.php.net/manual/en/book.pdo.php
编辑:
如果要将 JSON 对象分配给变量,例如里面 <script>
阻止,执行以下操作:
<script>
var myArray = <?= json_encode($rows) ?>;
</script>
关于javascript - 在 php 循环中写入 javascript 数组时如何将新行转换为实际\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012508/