PHP 即使我改变了变量也没有改变

PHP Variable Is Not Changing Even I Change It

我已经编写代码来获取移动屏幕分辨率检查的文档分辨率。事件侦听器检查客户端宽度,如果分辨率 <= 768 php var 应该变为 true 否则 false.

<script>
                        window.addEventListener("resize", function (e){
                        var width = document.body.clientWidth;
                        console.log(document.body.clientWidth);
                        if (width <= 768) {<?php $mobileScreenRes = true; ?> console.log("if: " + <?php echo json_encode($mobileScreenRes); ?>); }
                        else {<?php $mobileScreenRes = false; ?>console.log("else : " + <?php echo json_encode($mobileScreenRes); ?>); }
                        console.log("final:" + <?php var_export($mobileScreenRes); ?>);
                        console.log("isset :" + <?php echo isset($mobileScreenRes); ?>);

                    });
</script>

我可以得到宽度,但不能按我想要的方式使用它。 $mobileScreenRes变量是一个全局变量。控制台输出为:

795
VM45496:6 else : false
VM45496:7 final : false
VM45496:8 isset : 1

582
VM45496:5 if : true
VM45496:7 final :false
VM45496:8 isset : 1

我不明白为什么 final 总是假的,即使有 if 语句?

我重新格式化了代码以使其更容易理解:

<script>
  window.addEventListener("resize", function (e) {
    var width = document.body.clientWidth;
    console.log(document.body.clientWidth);
    if (width <= 768) {
      <?php $mobileScreenRes = true; ?>
      console.log("if: " + <?php echo json_encode($mobileScreenRes); ?>);
    } else {
      <?php $mobileScreenRes = false; ?>
      console.log("else: " + <?php echo json_encode($mobileScreenRes); ?>);
    }
    console.log("final: " + <?php var_export($mobileScreenRes); ?>);
    console.log("isset: " + <?php echo isset($mobileScreenRes); ?>);
  });
</script>

这里有两种语言:PHP 和 JavaScript。

重要的是要知道:

  1. 所有 PHP 首先执行,它不关心 JavaScript。具体而言,这是在页面发送给用户之前由网络服务器执行的。
  2. 所有JavaScript都在PHP之后执行。这是由用户的浏览器执行的。

在第 1 步之后页面将如下所示:

<script>
  window.addEventListener("resize", function (e) {
    var width = document.body.clientWidth;
    console.log(document.body.clientWidth);
    if (width <= 768) {
      console.log("if: " + true);
    } else {
      console.log("else: " + false);
    }
    console.log("final: " + false);
    console.log("isset: " + 1);
  });
</script>

这意味着当第 2 步运行时,最后两行已经设置好。