很多站长朋友们都不太清楚phpecho原理,今天小编就来给大家整理phpecho原理,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP中echo和print的区别 2、 在php中echo() print() print-r()区别 3、 PHP echo()语法问题 4、 php中echo和print的区别 5、 php echo函数 是什么意思 6、 PHP按字母顺序输出文件问题,怎么解决 PHP中echo和print的区别在实际使用中, php 语言的 print 和 echo 两者功能几乎完全一样。
两者之间主要的区别在于:
1、echo 可以同时输出多个字符串,而 print 则只可以同时输出一个字符串。
2、当以函数形式调用时,两者的返回值不同:
void echo ( string $arg1 [, string $... ] )
int print ( string $arg )
echo 没有返回值,而 print 返回值 int。
在php中echo() print() print-r()区别echo
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
PHP echo()语法问题你的这行语句中出现了多处概念性的错误
一、PHP字符串的句点连接:
1. php独立的字符串与变量、变量与变量、数字与变量、字符串与字符串之间,可以使用句点“."进行连接
示例:$result_str = "aaa" . $str;
注意看它们之间的形式,字符串使用单引或双引括起来,然后使用句点,后边跟着变量,反过来亦然: $result_str = $str . "aaa";
这样,你的写法按照这种语法结构书写就出现了问题,因为你的字符串之间出现了不应该出现的双引,如果按第1点所讲,你的写法应该是:
echo "<img>/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg</img><a herf = ".$dir. "\" . $_File . ">" . $File . "</a><br />"
2. 可这样依然不正确,因为在PHP字符串中,有一个特殊存在的字符”\“,这个字符是用来转义的特殊存在,如果想让它正常出现在字符串中,在”\"的前面,应该再加一个转义符”\“,也就是:”\\“
echo "<img>/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg</img><a herf = ".$dir. "\\" . $_File . ">" . $File . "</a><br />"
二、上面的这种写法或许不是你的初衷,你本是想把变量写在双引号之间,让它依然当做变量输出,这是PHP的另一种特殊语法结构
1. 在PHP中,双引号之间的变量依然会被PHP解析器解析为变量,而不是字符串:
示例:echo "$abc" 与 echo $abc相同
2. 再复杂一些,就是既有变量又有字符串: echo "str$abc"
这样,比如$abc里面存放的是”u“这个字符串,那么输出的就是:"stru"
3. 反过来,如果我想把变量放在前面: echo "$abcstr" 这样就不行了,你必须要保证变量后面跟着的是非字母、数字和下划线才行,否则PHP解析器会认为你的变量不是$abc,而是$abcstr
你的例子中不存在这一条的问题;
4. 那么按照这一点来看,你的写法好像并没有错误,那么看第三条:
三、想在双引号之间输出双引号的字符串,需要使用到转义字符:
1. 比如有这样的一个字符串: echo "say:"yes"";
这里,我本是想输出双引号,但发现,PHP解析器不认识它们,这是对的,不认识才对,认识了反倒不正常,因为PHP会把双引号当成字符串的边界。
解决: echo "say:\"yes\"";
2. 你的问题中就出现了这种情况(如果按照你的初衷来看)
你的问题: echo "<img>/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg</img><a herf = \"$dir\$_File\">$File</a><br />"
注意,你的这行字符串中,两个需要输出的双引号变成了:\"
可这样还不行,你里面出现了一个\,就是目录的分界,那这个也需要转义:
echo "<img>/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg</img><a herf = \"$dir\\$_File\">$File</a><br />"
四、原本到这里,看上去好像没有问题了,但有一个额外的现象要多提一下:
HTML中的<img>标签,你写得非常不正解,这个标签是自封闭型标签,在XHTML1.0中,规范的写法是:
<img src="/data/upload/help/202303/02/8a54cef936cd2720ed4d70ba76f46cfe.jpg" alt="" />
五、总结,你的程序最后有两种可能的写法:
1. 利用句点连接语法和双引号转义:
echo "<img src=\"/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg\" alt=\"\"><a herf = \"".$dir. "\\" . $_File . "\">" . $File . "</a><br />";
2. 利用双引号之间的变量可以解析:
echo "<img src=\"/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg\" alt=\"\"><a herf = \"$dir\\$_File\">$File</a><br />"
3. 其实还有第三种写法,就是利用单引号之间可以出现不用转义的双引号,以及单引号之间的特殊字符无需转义的特性写法,这个写法我就不详细说原理了:
echo '<img src="/data/upload/help/202303/02/73688444a73a76169d03b689a7e785cf.jpg" alt=""><a herf = \"'.$dir. '\\' . $_File . '">' . $File . '</a><br />';
php中echo和print的区别echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。他们的区别在于:
(1) echo可以输出多个字符串,像下面这样:
echo 'a','b','c';
如果你非要加上圆括号,注意写成echo ('a','b','c');是错误的,应该写成:
echo ('a'),('b'),('c');
它没有像函数的行为,所以不能用于函数的上下文
(2) print只能输出一个字符串,它可以表现得像一个函数,比如你可以如下使用:
$ret = print 'Hello World';
所以它能用在更复杂的表达式中。
php echo函数 是什么意思echo 函数实际不是一个函数。
作用是输出一个或多个字符串。
<?php
echo 1;
//输出 1
echo "aa";
//输出 aa
PHP按字母顺序输出文件问题,怎么解决这个是echo语句的问题
程序先执行了类中方法,从而影响了原本的输出顺序;
可以使用echo的多参数输出用法,用逗号连接
echo $ret->rt($i0),$arr['shi'],$ret->rt($i1),$arr['yuan'],$arr['zheng'];就可以了
具体的原因是$ret->rt()这个方法中有自己的echo,会先执行得到的结果再和其他的字符串连接起来执行echo输出,
原理出处在php手册的echo那一节,用户评论中nikolaas mennega 的经验
关于phpecho原理的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpecho原理 phpize原理的详细内容...