-1

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

4

6 回答 6

7

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>
于 2012-08-20T18:18:28.750 回答
5

PHP 在服务器上运行。JavaScript 在浏览器中运行。

您的服务器运行 PHP,然后将其发送到您的浏览器:

<script>
        for (var i = 0; i < markers.length; i++) {
      }
    1</script>

JavaScript 影响 PHP 的唯一方法是使用 AJAX 或类似方法。

于 2012-08-20T18:18:52.173 回答
3

PHP 运行服务器端,JavaScript 运行客户端(忽略 Node.JS 等)

您的浏览器收到的 HTML 如下所示:

<script>
    for (var i = 0; i < markers.length; i++) {
    }
    1   //this always prints "1"
</script>

所以,我不确定你想在这里完成什么,但你必须记住 PHP 和 JavaScript 不能直接交互。

于 2012-08-20T18:18:44.733 回答
2

你不能像那样混合 PHP 和 JavaScript。它不是那样工作的。

PHP在 JavaScript之前运行。所以,这些行:

  • <?php $totalMarkers=0; ?>
  • <?php $totalMarkers=$totalMarkers+1; ?>
  • <?php echo $totalMarkers ?>

在您的浏览器看到它之前运行。

您的浏览器只会看到:

for (var i = 0; i < markers.length; i++) {
}
1
于 2012-08-20T18:19:47.767 回答
1

不,这是不可能的——如果不使用一堆看起来完全不适合你的 AJAX 就不行。PHP 在执行任何 JavaScript 之前就已执行。PHP 是服务器端的,JavaScript 是客户端的。因此,JavaScript 无法控制 PHP。

于 2012-08-20T18:18:53.543 回答
1

你不能那样做。PHP 是一个超文本预处理器。它在任何 Javascript 代码之前执行。您实际拥有的代码需要 $totalMarkers 并将其初始化为 0。然后它添加一个然后它回显......它将始终为 "1" !

如果您想使用 PHP 操作它,您需要使用 Javascript 变量进行计数,然后将其发送到服务器。

于 2012-08-20T18:19:48.630 回答