0

看看下面的代码

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

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

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

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

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

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

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

4

2 回答 2

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

于 2012-08-11T12:09:44.787 回答
0

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

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

类似于:

echo $x . " world";

或者

echo $x , " world";

一切都会输出hello world

请注意,不允许在单引号内引用变量,因此
echo '$x world';
是无效的。

于 2012-08-11T12:11:52.883 回答