我正在尝试实现一个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。
Javascript在客户端计算机上执行,PHP在服务器上执行。因此,在页面完全加载到用户浏览器中之前,循环不会运行——此时,将不会执行任何PHP。
当该页面被呈现时,这就是过程:
<script>
<--从字面上获得输出
<?php $totalMarkers=0; ?>
<--没有输出
for (var i = 0; i < markers.length; i++) {
<--按字面意思输出
<?php $totalMarkers=$totalMarkers+1; ?>
<--没有输出
}
<--按字面意思输出
<?php echo $totalMarkers ?>
<--输出1个
</script>
<--按字面意思输出
如果你要查看来源,你会看到这个:
<script>
for (var i = 0; i < markers.length; i++) {
}
1 //this always prints "1"
</script>
PHP运行在服务器上。JavaScript在浏览器中运行。
您的服务器运行PHP,然后将其发送到您的浏览器:
<script>
for (var i = 0; i < markers.length; i++) {
}
1</script>
JavaScript影响PHP的唯一方法是使用AJAX或类似方法。
PHP运行服务器端,JavaScript运行客户端(忽略Node.JS等)
您的浏览器收到的HTML将看起来像:
<script>
for (var i = 0; i < markers.length; i++) {
}
1 //this always prints "1"
</script>
所以,我不确定你想在这里完成什么,但你必须记住,PHP和JavaScript不能直接交互。
您不能像那样混合PHP和JavaScript。这样不行。
PHP是在JavaScript运行之前运行的。因此,行:
<?php $totalMarkers=0; ?>
<?php $totalMarkers=$totalMarkers+1; ?>
<?php echo $totalMarkers ?>
在浏览器看到之前运行。
您的浏览器只看到:
for (var i = 0; i < markers.length; i++) {
}
1
不,这是不可能的——如果不使用一堆AJAX,这似乎完全不适合你。PHP是在执行任何JavaScript之前执行的。PHP是服务器端的,JavaScript是客户端的。因此,JavaScript无法控制PHP。
你不能那样做。PHP是一个超文本预处理器。它在任何Javascript代码之前执行。您实际拥有的代码采用$totalMarkers并将其初始化为0。然后它加了一个,然后回声。。。它将永远是"1"!
如果您想用PHP操作它,您需要使用Javascript变量进行计数,然后将其发送到服务器。