您的位置:首页 > 其它

echo 和 print

2016-05-30 22:30 309 查看
<?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()类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: