【问题标题】:Why differences in output using SUPERGLOBAL in PHP?为什么在 PHP 中使用 SUPERGLOBAL 的输出存在差异?
【发布时间】:2015-01-14 07:30:54
【问题描述】:

运行以下代码时出现错误:

<?php
    //superglobal.php

    foreach($_SERVER as $var=>$value)
    {
        echo $var=>$value.'<br />';     //this will result in to following error: 
                                                    //Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ';' in 
                                                    //C:\xampp\htdocs\w_j_gilmore\CH_03_PHP_BASICS\superglobal.php on line 6
    }
?>

以下代码运行成功

<?php
    //superglobal.php

    foreach($_SERVER as $var=>$value)
    {
        echo "$var=>$value<br />";  
    }
?>

单引号和双引号打印是有区别的。 为什么?

【问题讨论】:

  • 是的。这是正确的行为$var=&gt;$value 应该返回一个解析错误,因为=&gt; 用于数组中使用的密钥对。好吧,这个 '=&gt;' 只是被视为文字字符串

标签: php variables echo server superglobals


【解决方案1】:

两者之间的区别在于,第一个您尝试使用 =&gt; 运算符(在那个地方无效,因此会导致语法错误),而第二个您打印一个字符串里面恰好有=和&gt;这两个字符。

第二个实际上可以重写为:

<?php
    //superglobal.php

    foreach($_SERVER as $var=>$value)
    {
        echo $var . "=>" . $value . "<br />";  
    }
?>

如果您只是出于调试原因尝试输出$_SERVER,我建议使用var_dump 或print_r

var_dump($_SERVER);

【讨论】:

    【解决方案2】:

    你没有引用字符串:

    echo $var=>$value.'<br />'; 
    

    引用如下:

    echo '$var => $value <br />'; 
    

    如果是单引号,则不解释变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      相关资源
      最近更新 更多