echo 和 print

PHP中print与echo的区别
本文探讨了PHP中print与echo的区别,详细分析了它们在语法、返回值及内部实现上的差异。print可以返回值,而echo则不能;此外,echo能输出多个字符串,效率相对较高。
<?php
print('ok');
echo 'ok';
?>
从表面看一个是函数一个是语句,PHP手册中也有这样的解释:echo() is not actually a function (it is a language construct)
那么,我们看看究竟会有什么具体的区别,看如下代码:
<?php
$tmp = print('ok');  //pass
$tmp = echo 'ok';    //parse error
?>
从这里我们可以看出print是带有返回值的,echo是不能有返回值的。我们继续追下去,看看为什么。从PHP中关于这两个的实现来分析。
print:
void zend_do_print(znode *result,const znode *arg TSRMLS_DC){
    zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); 
    opline->result.op_type = IS_TMP_VAR;
    opline->result.u.var = get_temporary_variable(CG(active_op_array));
    opline->opcode = ZEND_PRINT;
    opline->op1 = *arg;
    SET_UNUSED(opline->op2);
    *result = opline->result;
}
从标红的地方我们可以看到print有赋值出去,即有返回值。
再来看echo
void zend_do_echo(const znode *arg TSRMLS_DC) {
    zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC); 
    opline->opcode = ZEND_ECHO;
    opline->op1 = *arg;
    SET_UNUSED(opline->op2);
}
我们可以发现echo里并没有赋值result的代码。从这里我们可以发现他们两者之间的区别


一般来说,PHP中动态输出HTML内容,是通过print 和 echo 语句来实现的,在实际使用中, print 和 echo 两者的功能几乎是完全一样。可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。
echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。
他们的区别在于:
 print只能输出一个字符串,它可以表现得像一个函数,而echo可以实现多个字符串的输出,并且可以试想多个字符串的链接。另外,echo的效率相对比较快

分析总结:

echo    命令和print命令相同,没有区别  
echo    函数和print函数有区别。  
echo()    无返回值,与echo命令相同  
print()    有返回值,成功,返1,false,返0.    
printf()    和sprintf()类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量 

### 回答1: echo print 都是 PHP 中的语句,用于向浏览器输出内容。 但是它们之间有一些区别: 1. 语法不同:echo 是一个语言结构,可以不带括号使用,而 print 是一个函数,必须带括号使用。 2. 返回值不同:echo 没有返回值,而 print 有返回值,总是返回 1。 3. 性能不同:echoprint 更快,因为它是语言结构,不需要调用函数。 总之,echo print 都是用于输出内容的语句,但是它们之间有一些差别,需要根据实际情况选择使用。 ### 回答2: echoprint都是在PHP中用于输出内容的语句,它们之间有一些区别。 首先,echo是一个语言结构,而print是一个函数。这意味着echo的执行速度比print稍快,因为它不需要返回值。 其次,echo可以同时输出多个字符串,而print只能输出一个字符串。echo通过逗号来分隔不同的输出内容,而print只能打印一个字符串。 第三,echo没有返回值,而print的返回值始终为1。这意味着在使用echo时,我们不能像使用变量一样将其赋值给其他变量,而使用print时,可以将其返回值赋给其他变量。 此外,由于echo是语言结构,我们可以省略其括号,而print是一个函数,使用时必须加上括号。 最后,echo没有返回值,可以在任何地方使用,而print有返回值,只能在表达式中使用。 综上所述,echoprint在功能上非常相似,都可以用于输出字符串。区别在于echo执行速度更快,可以同时输出多个字符串,无返回值,而print执行速度稍慢,只能输出一个字符串,有返回值为1。根据具体的需求,我们可以选择使用适合的语句。 ### 回答3: echoprint都是用于输出文字的PHP语言函数,它们的区别如下: 1. 语法:echo是一个语言构造,不需要使用括号,可以直接将要输出的内容放在后面,而print是一个函数,需要使用括号将要输出的内容包裹起来。 2. 返回值:echo没有返回值,它可以同时输出多个字符串,而print有一个返回值(1),并且只能输出一个字符串。 3. 输出方式:echo输出的速度比print略快,因为它没有返回值的处理过程。 4. 使用方式:echo可以用于简单输出,也可以用于将变量的值输出,例如:echo "Hello World!"; echo $variable;;而print只能用于输出变量的值,例如:print "Hello World!"; print $variable;。 5. 可嵌套性:echo不能直接在HTML标签中嵌套使用,需要使用其他方式进行嵌套,如:<?php echo "<h1>Hello World!</h1>"; ?>;而print可以直接在HTML标签中嵌套使用,如:<?php print "<h1>Hello World!</h1>"; ?>。 综上所述,echoprint在实际使用中的区别主要体现在语法、返回值、输出方式、使用方式可嵌套性上。根据具体的需求场景,开发人员可以选择使用其中之一来输出文字。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值