gpt4 book ai didi

php - 在 PHP foreach 的脚本中回显 JSON.parse 时,如何避免语法错误?

转载 作者:行者123 更新时间:2023-12-03 08:12:23 25 4
gpt4 key购买 nike

这是我在 StackOverflow 上的第一个问题,我认为自己是新手(自学成才)。请多多包涵。

以下脚本在未包含在 php 标记中时可在页面上运行。

<script>
var json = '{"submitted_values":{"15":{"15.1":"123"}}}';
var obj = JSON.parse(json);

function printValues(obj) {
for (var k in obj) {
if (obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k]);
};
}
};
document.write(obj["submitted_values"]["15"]["15.1"]);
</script>

当包裹在 php 标签中并被回显时,相同的脚本在页面上不起作用。

它实际上使网站崩溃。

第二行 var json = '{"submitted_values":{"15":{"15.1":"123"}}}';在下一个代码块中导致 syntax error, unexpected ':' .
<?php echo '<script>
var json = '{"submitted_values":{"15":{"15.1":"123"}}}';
var obj = JSON.parse(json);

function printValues(obj) {
for (var k in obj) {
if (obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k]);
};
}
};
document.write(obj["submitted_values"]["15"]["15.1"]);
</script>'; ?>

以下描述了我想要工作的内容。

测试是一个表格行,三列。

下一个代码块中的第 1 列是上面的脚本,当然,它不起作用。

Col 2 工作并产生一个字符串,其中 document.write(obj["submitted_values"]["15"]["15.1"]);在脚本作品中。我已经测试了一个实际的(精心制作的、嵌套的)字符串,它确实有效,但只有在 php 标签之外时才有效。

Col 3 是上面的脚本,但带有 '{"submitted_values":{"15":{"15.1":"123"}}}'替换为 ' . esc_html($incomplete_submission->submission) . ' .

Col 3 是我最终想要在 WordPress 插件中工作的内容。

如果可以的话,有人可以从 echo '<!-- Col 3 --><td><script>复制吗?在下面的代码块中,更改代码以使其正常工作,然后将其全部粘贴到答案中?

我要求粘贴整个内容,因为它可以为您节省额外的来回时间。

谢谢!
<?php
foreach ($incomplete_submissions as $incomplete_submission)
{
echo '<!-- Row --><tr>';
echo '<!-- Col 1 --><td><script>
var json = '{"submitted_values":{"15":{"15.1":"123"}}}';
var obj = JSON.parse(json);

function printValues(obj) {
for (var k in obj) {
if (obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k]);
};
}
};
document.write(obj["submitted_values"]["15"]["15.1"]);
</script></td>';
echo '<!-- Col 2 --><td>' . esc_html($incomplete_submission->submission) . '</td>';
echo '<!-- Col 3 --><td><script>
var json = ' . esc_html($incomplete_submission->submission) . ';
var obj = JSON.parse(json);

function printValues(obj) {
for (var k in obj) {
if (obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k]);
};
}
};
document.write(obj["submitted_values"]["15"]["15.1"]);
</script></td>';
echo '</tr>';
}
?>

最佳答案

PHP 有 Heredoc 和 Nowdoc 字符串,它们是在 PHP 中处理多行字符串的最佳方式。

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

您可以通过使用这种类型的字符串来解决您的问题,如下所示:

<?php echo <<<EOD
<script>
var json = '{"submitted_values":{"15":{"15.1":"123"}}}';
var obj = JSON.parse(json);

function printValues(obj) {
for (var k in obj) {
if (obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k]);
};
}
};
printValues(obj);
</script>
EOD;
?>

请注意,结束标记 EOD 根本不能缩进,否则 PHP 不会承认它。此外,您不必使用“EOD”;它可以是你想要的任何字符串。

关于php - 在 PHP foreach 的脚本中回显 JSON.parse 时,如何避免语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60368582/

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