我使用相同的名称从PHP和JavaScript中的循环创建变量。这些名称存储在数组中(一个在PHP中,另一个在JS中)。 PHP中的每个变量都包含我需要在JavaScript中传递的信息。现在,这是有效的:
vars_jsarray =["Name1", "Name2", "Name3"];
for (var i = 0; i < vars_jsarray.length; i++){
this[vars_jsarray[i]] = [<?=${$vars_phparray[0]};?>];
}
我想改变那个“0”并改为使用变量“i”。像这样的东西也可以工作(因为数组是相同的):
vars_jsarray =["Name1", "Name2", "Name3"];
for (var i = 0; i < vars_jsarray.length; i++){
this[vars_jsarray[i]] = [<?=${vars_jsarray[i]};?>];
}
如何使用此JavaScript循环访问PHP变量?
答案 0 :(得分:0)
假设数组完全相同,请删除JS循环并使用PHP:
<?php
for ($i = 0; $i < count($vars_phparray); $i++){
echo "this[ {$vars_phparray[$i]} ] = [ {$vars_phparray[$i]} ];";
}
?>
虽然将来您可能会发现这种工作方式非常混乱非常混乱。
相反,您可以使用一些AJAX从服务器as it described here中获取数据。
答案 1 :(得分:0)
脱离我的头顶
vars_jsarray =["Name1", "Name2", "Name3"];
vars_js_phparray = [<?=implode("," $vars_phparray);?>]
for (var i = 0; i < vars_jsarray.length; i++){
this[vars_jsarray[i]] = [vars_js_phparray[i]];
}
不确定这是否能解决您的要求,但根据您的示例,它是一个精确的副本。
答案 2 :(得分:0)
你误解了PHP的工作原理;这肯定不会起作用 - 不是现在的形式。
通常,PHP将首先生成一个HTML文档,然后然后发送到客户端(浏览器)。此时PHP脚本已完成执行服务器端代码*。
生成的文档当然可以包含JavaScript,它将在实际页面发送到客户端之后在客户端上运行。除非你使用AJAX调用,否则没有来回沟通,但这比简单的语言混合要好得多。
也就是说,在这种情况下,您基本上使用PHP将JavaScript写入客户端的浏览器,这将在客户端上运行。请考虑以下示例:
PHP代码
echo "<script>";
for ($i = 0; $i < 3; $i++)
{
echo "console.log('Let us write something into console: $i');";
}
echo "</script>";
此代码将以下页面发送给客户端:
<强> HTML / JavaScript的强>
<script>
console.log('Let us write something into console: 0');
console.log('Let us write something into console: 1');
console.log('Let us write something into console: 2');
</script>
当执行上述非常简单的Javascript时,无法访问用于创建它的PHP $i
变量,因为它不再存在。当然不在客户的机器上。
*假设使用了输出缓冲区,否则页面会在创建时逐行发送。
答案 3 :(得分:0)
您可以相应地访问JS中的PHP变量:
var jsVar = <?php echo $phpVar; ?>;
但是,我再也不推荐它。使用AJAX。