我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文分析php中非常简单的echo语句,真的太普通。简单到大家都不想看本文,一个echo "hello world"又有什么好说的呢?对,本文就是要描述“hello world”的事情。

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - php-echo输出变量
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验总结。本文测试环境:win10nginx@1.15.11php@8.2.10-nts

hello world

echo "hello world";

输出的就是hello world。但是,如果把它都换成变量呢?有什么变化?

$hello = "hola";
$world = "苏南大叔";

方案一,点操作符

echo $hello." ".$world;
echo $hello.' '.$world;
echo $hello.` `.$world;  // 注意这个输出没有空格

输出:

hola 苏南大叔
hola 苏南大叔
hola苏南大叔

方案二,逗号

echo $hello," ",$world;
echo $hello,' ',$world;
echo $hello,` `,$world;  // 注意这个输出没有空格

输出:

hola 苏南大叔
hola 苏南大叔
hola苏南大叔

方案三:双引号【解析】

echo "$hello,$world";
echo "{$hello}{$world}";
echo "$hello$world";
echo "$hello$world呀";   // 错误

输出:

hola,苏南大叔
hola苏南大叔
hola苏南大叔
hola

但是,对于$变量,最好是使用{}主动进行切分,否则程序如何切分,就不一定的事情了。

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - 双引号
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-2)

方案四:单引号【原样输出】

echo '$hello,$world';      // 错误
echo '{$hello}{$world}';   // 错误
echo '$hello$world';       // 错误
echo $hello.' '.$world;
echo $hello,' ',$world;
echo $hello,' ',$world,"\r\n";
echo $hello,' ',$world,'\r\n';

输出:

$hello,$world
{$hello}{$world}
$hello$world
hola 苏南大叔
hola 苏南大叔
hola 苏南大叔
hola 苏南大叔\r\n

可见,单引号和双引号相比较的话,这些特殊的字符全部没有按照想法解析,单引号的作用就是原样输出。

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - 单引号
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-3)

方案五,重音符【执行命令!】

echo "1\r\n";
echo `$hello,$world`;      // 错误
echo "\r\n2\r\n";
echo `{$hello}{$world}`;   // 错误
echo "\r\n3\r\n";
echo `$hello$world`;       // 错误
echo "\r\n4\r\n";
echo $hello.` `.$world;
echo "\r\n5\r\n";
echo $hello,` `,$world;

输出:

1

2

3

4
hola苏南大叔
5
hola苏南大叔

可见,这个重音符包裹的变量都没有被解析,最终全部空白.......

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - 重音符
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-4)

在下面的这篇文章里面,苏南大叔曾经提到过:这种php里面的重音符,相当于shell_exec

新的范例:

$command = "chdir";
echo $command;
echo `${command}`;
echo `$command`;

输出:

chdir
C:\Users\sunan\Desktop\test\php
C:\Users\sunan\Desktop\test\php

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - 重音符2
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-5)

方案六,定界符eof

$str = <<<EOF
$hello,$world \r
$hello,$world呀!\r
{$hello},{$world}呀!\r
EOF;
echo $str;

输出:

hola,苏南大叔 
hola,
hola,苏南大叔呀!

可见:定界符除了可以输出多行字符外,其它的情况表现和双引号一样,对特殊字符和$变量,都进行解析。一样存在着解析不正确的情况,需要使用{}主动进行界定。

苏南大叔:php教程,echo语句中双引号单引号及其它输出变量的方式 - 定界符
php教程,echo语句中双引号单引号及其它输出变量的方式(图6-6)

参考文章:

题外话

echo "hello world",PHP_EOL;
echo "hello world","\r\n";

题外话,就是PHP_EOL就是不同操作系统下的\r\n的代言词。

相关文章

结束语

echo后面没有(),并且后面可以输出多个参数,使用双引号、单引号、重音号、定界符得到的结果是完全不一样的。所以,输出特殊字符的时候,要仔细斟酌。
更多苏南大叔的php相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php