在php循环中编写javascript数组时如何将新行转换为实际行\n

在php循环中编写javascript数组时如何将新行转换为实际行\n,javascript,php,arrays,newline,Javascript,Php,Arrays,Newline,我有一段代码,它在PHP代码(从mysql数据库检索)中编写一个JS对象数组,如下所示: 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]"; (我

我有一段代码,它在PHP代码(从mysql数据库检索)中编写一个JS对象数组,如下所示:

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中不使用斜杠,这会起作用,就像这样:
\\n

我还没有测试过这个,但如果我没记错的话,应该可以


但是,如果您只想在HTML页面上显示文本,为什么不使用一个

标记来代替
\n
,这将给您一个实际的突破,即
\n
只需在代码中开始一行新行,而只需在浏览器中显示为一个空格,这是将PHP数组转换为JSON的最佳方式,要使用
json\u encode
函数:

$rows = [];
while ($row = mysql_fetch_assoc($resultat)) {
    $rows[] = $row;
}
echo json_encode($rows);
我不记得是否有更简单的方法通过旧的mysql函数获得整个结果集。我建议您使用PDO而不是
mysql\u query
mysql\u fetch\u row
,等等:

编辑:

如果要将JSON对象分配给变量,例如在
块内,请执行以下操作:

<script>
var myArray = <?= json_encode($rows) ?>;
</script>

var myArray=;

不要手工制作JSON字符串。省去麻烦,只需使用.Non,我不想将页面上的文本显示为html(我会使用nl2br),它是用来动态填充JS数组的。谢谢Ronni。这是一个完美的答案,它就像一个魅力!(我不知道这个函数json_encode…它很强大!)