为什么在PHP中使用SUPERGLOBAL输出的差异?

时间:2014-11-17 11:35:12

标签: php variables echo server superglobals

我通过运行以下代码收到错误:

<?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 />";  
    }
?>

单引号和双引号打印是不同的。 的 WHY吗

2 个答案:

答案 0 :(得分:2)

2之间的区别在于,在第一个尝试使用=>运算符时(在该位置无效,因此会导致语法错误),而在第二个您打印时恰好包含字符=>的字符串。

第二个有效可以改写为:

<?php
    //superglobal.php

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

如果您只是出于调试原因而尝试输出$_SERVER,建议您使用var_dumpprint_r

var_dump($_SERVER);

答案 1 :(得分:1)

你没有引用字符串:

echo $var=>$value.'<br />'; 
引用的内容如下:

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

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