循环的Javascript中的PHP计数器


PHP counter in Javascript for loop

我正在尝试实现一个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变量进行计数,然后将其发送到服务器。