2012-08-11 47 views
0

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

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

回波语句的两个代码从使用相同的技术超全局数组$ _SERVER返回HTTP_HOST指数的值?我的问题是什么导致了语法的区别?我注意到以下区别:

  1. 第一个echo语句中的HTTP_HOST没有用单引号括起来,这与我在第二个echo语句中使用的语法相反。我碰到下面的错误,如果我包住HTTP_HOST在单引号的第一回声声明

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\php-blog\simple-blog\server.php on line 2

  1. 为什么而在不需要它后[“HTTP_HOST”]需要一个逗号在第二回声声明第一个回声陈述?如果我放弃这个逗号,我会得到以下错误。

Parse error: syntax error, unexpected '"\n\n"' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';' in C:\xampp\htdocs\php-blog\simple-blog\server.php on line 3

我是新来编程,需要引导,帮助请。 谢谢!

回答

4

你的第一条语句只回应一个参数。 参数是一个包含变量的字符串。 做这件事时,你应该使用括号,以确保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

0

PHP语法允许指双引号内的变量。
例如:

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

是类似于:

echo $x . " world"; 

echo $x , " world"; 

和所有将输出hello world。这指的是单引号内的变量

通知是不允许的,因为这个原因
echo '$x world';
是无效的。