从JavaScript循环变量访问PHP变量

时间:2014-11-24 17:57:10

标签: javascript php arrays loops

我使用相同的名称从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变量?

4 个答案:

答案 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。