在Javascript for循环中的PHP计数器

时间:2012-08-20 18:14:51

标签: php javascript html

我正在尝试实现一个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。

6 个答案:

答案 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变量进行计数,然后将其发送到服务器。