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


What causes this difference of syntax?

看看下面的代码

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

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

  1. HTTP_HOST第一个 echo 语句中的 没有用单引号括起来,这与我在第二个 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. 为什么在第二个回显语句的 ['HTTP_HOST'] 后面需要逗号,而在第一个回显语句中不需要逗号?如果我丢弃这个逗号,我会收到以下错误。

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

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

您的第一个语句调用只有一个参数的 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

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

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

类似于:

echo $x . " world";

echo $x , " world";

并且所有人都将输出hello world.

请注意,不允许引用单引号内的变量,因此

echo '$x world';无效。