是什么导致这种语法差异?

时间:2012-08-11 12:05:54

标签: php

查看下面的代码

<?php
echo "$_SERVER[HTTP_HOST] <br />";
echo $_SERVER['HTTP_HOST'], "\n\n";
?>

两个echo语句都使用相同的技术从超全局数组$ _SERVER返回HTTP_HOST索引的值?我的问题是什么导致了语法的差异?我注意到以下差异:

  1. 第一个echo语句中的HTTP_HOST没有用单引号括起来,这与我在第二个echo语句中使用的语法相反。如果我将HTTP_HOST包含在第一个echo语句的单引号中,则会出现以下错误
  2.   

    解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)在C:\ xampp \ htdocs \ php-blog \ simple-blog \ server.php中在第2行

    1. 为什么在第二个echo语句中['HTTP_HOST']后需要逗号,而第一个echo语句中不需要逗号?如果我丢弃此逗号,则会收到以下错误。
    2.   

      解析错误:语法错误,意外''\ n \ n“'(T_CONSTANT_ENCAPSED_STRING),期待','或';'在第3行的C:\ xampp \ htdocs \ php-blog \ simple-blog \ server.php

      我是编程新手,需要指导,请帮忙。 谢谢!

2 个答案:

答案 0 :(得分:4)

您的第一个语句只使用一个参数调用echo。 参数是一个包含变量的字符串。 这样做时你应该使用括号来确保php了解你的变量是否开始:

 echo "{$_SERVER['HTTP_HOST']} <br>";

您还可以使用点连接字符串:

 echo $_SERVER['HTTP_HOST'] . "<br>";

逗号只是一次写几个回声的另一种方式:

echo 1, 2;

相同
echo 1;
echo 2;

http://php.net/manual/en/function.echo.php

答案 1 :(得分:0)

php语法允许引用双引号内的变量 例如:

$x = "hello";
echo "$x world";

类似于:

echo $x . " world";

echo $x , " world";

并且所有人都会输出hello world

请注意,不允许引用单引号内的变量,因此为了这个原因 echo '$x world';
无效。

相关问题