我正在尝试实现一个javascript for循环,其中php变量正在计算(phpVar ++)每个循环。但是,从0开始的变量总是最终为1,即使循环多次循环。
这不可能吗?
<script>
<?php $totalMarkers=0; ?>
for (var i = 0; i < markers.length; i++) {
<?php $totalMarkers=$totalMarkers+1; ?>
}
<?php echo $totalMarkers ?> //this always prints "1"
</script>
我正在尝试这样做,以便我可以在HTML正文中的不同位置打印$ totalMarkers。
答案 0 :(得分:7)
Javascript在客户端计算机上执行,PHP在服务器上执行。因此,在用户的浏览器中完全加载页面之前,您的循环才会运行 - 此时,不会执行任何PHP。
呈现该页面时,这是一个过程:
<script>
&lt; - 字面输出
<?php $totalMarkers=0; ?>
&lt; - 没有输出
for (var i = 0; i < markers.length; i++) {
&lt; - 字面输出
<?php $totalMarkers=$totalMarkers+1; ?>
&lt; - 没有输出
}
&lt; - 按字面输出
<?php echo $totalMarkers ?>
&lt; - 输出1
</script>
&lt; - 字面输出
如果您要查看来源,您会看到:
<script>
for (var i = 0; i < markers.length; i++) {
}
1 //this always prints "1"
</script>
答案 1 :(得分:5)
PHP在服务器上运行。 JavaScript在浏览器中运行。
您的服务器运行PHP,然后将其发送到您的浏览器:
<script>
for (var i = 0; i < markers.length; i++) {
}
1</script>
JavaScript可以影响PHP的唯一方法是使用AJAX或类似方法。
答案 2 :(得分:3)
PHP运行服务器端,JavaScript运行客户端(忽略Node.JS et.al。)
您的浏览器收到的HTML将如下所示:
<script>
for (var i = 0; i < markers.length; i++) {
}
1 //this always prints "1"
</script>
所以,我不确定你想在这里完成什么,但你必须记住,PHP和JavaScript不能直接交互。
答案 3 :(得分:2)
你不能像这样混合PHP和JavaScript。它没有那种方式。
PHP在之前运行。所以,行:
<?php $totalMarkers=0; ?>
<?php $totalMarkers=$totalMarkers+1; ?>
<?php echo $totalMarkers ?>
在浏览器看到之前运行。
您的浏览器只看到:
for (var i = 0; i < markers.length; i++) {
}
1
答案 4 :(得分:1)
不,这是不可能的 - 不是没有使用一堆似乎完全不合适的AJAX。 PHP在执行任何JavaScript之前执行。 PHP是服务器端的,JavaScript是客户端的。因此,JavaScript无法控制PHP。
答案 5 :(得分:1)
你做不到。 PHP是一个超文本预处理器。它在之前执行任何Javascript代码。您实际拥有的代码需要$ totalMarkers并将其初始化为0.然后它会添加一个然后它回显......它将始终为“1”!
如果你想用PHP操作它,你需要使用Javascript变量进行计数,然后将其发送到服务器。