【问题标题】:php variable scopephp变量作用域
【发布时间】:2011-08-03 16:03:34
【问题描述】:

我对 php 变量范围感到困惑。 如:

while(true){
    $var = "yes , it is a test!";
  }
  printf($var)

$var 是在 while 语句范围内定义的,我们如何才能将其置于其范围之外?我在文档上找不到解释。

我想知道 php 如何处理它的作用域。

【问题讨论】:

  • while (true) 是一个无限循环...
  • 请返回并查看您的旧问题。如果有好的解决方案,请使用绿色的“检查”将它们标记为已接受。如果没有(我怀疑),请考虑用你最终如何解决问题来回答你自己的问题。此外,请尝试检查您的格式。
  • 这可能是一个有用的起点:php.net/manual/en/language.variables.scope.php
  • switch() case 语句怎么样?它是否像函数一样创建自己的范围?谢谢~
  • 如果你想创建一个新的本地范围stackoverflow.com/a/33460057/3160597

标签: php scope


【解决方案1】:

while 不是函数。变量的范围是指functionsclasses内的变量

【讨论】:

    【解决方案2】:

    在 PHP 中,while 循环不会创建新的scope。所以它将在函数中可用

    【讨论】:

      【解决方案3】:

      如果您这样做while(true),您将无法摆脱这段时间,所以没关系。但是如果你有一个真正的表达,就像这样(这是一个无用的例子,我知道

      $i=0
      while($i<10){ 
         $var = "yes , it is a test!"; 
         $i++;
       } 
       printf($var);
      

      只会工作。 没有特殊的“while”变量范围,printf 将打印您的字符串。检查:http://php.net/manual/en/language.variables.scope.php

      【讨论】:

        【解决方案4】:

        循环在 PHP 中没有任何作用域。变量只是在循环外可用。

        就在循环外echo

        echo $var;

        【讨论】:

          【解决方案5】:

          有关完整答案,请查看文档:

          http://php.net/manual/en/language.variables.scope.php

          【讨论】:

            【解决方案6】:

            注意:不同的 PHP 版本在 $GLOBALS、$_SERVER ($HTTP_SERVER_VARS [deprecated]) 和 $_SESSION 上的行为不同。请检查一下。旧的 PHP 页面并不总是向上兼容。你应该检查一下。

            【讨论】:

              猜你喜欢
              • 2011-01-20
              • 1970-01-01
              • 1970-01-01
              • 2013-09-08
              • 1970-01-01
              • 1970-01-01
              • 2018-04-17
              • 2017-06-21
              • 2023-01-05
              相关资源
              最近更新 更多