php 三元运算符 echo不是函数
本来嘛。。对于三元运算符不算陌生,用PHP也用好几年了。但就是喜欢用if ,难得用了它几次。。又发觉有问题了,-_-
$a==true ? print "yes" : print "no";//这个运行正常,
$a==true ? echo "yes" : echo "no"; //这个会报错,
第二句会报错,然后百度了一个....-_-.....
才知道自己基础的东西是这么差。。哎。。
echo 是语言结构,和 if else一样,而 print是函数,和 substr()这样的函数一样。
语言结构的处理效率要高于函数,
echo 输出的用法:echo "hello $a";
print 输出用法:print "hello $a";
有人可能认为 echo 也可以这样写:echo ("a"); 其实这里 ()括号只是运算符而已。而不表示函数调用。
因为echo 是语言结构,而不是函数。
换成是 echo ,可以这样写:echo $a==true ? "yes" : "no"; // 这样也可以的。
然后又查了一下。
一直在使用的echo print printf 的区别
发现网上很多都是COPY的。。而且还说echo是函数。。。我晕了。。基础比我还差-__-....
下面是从网上COPY整理来的
echo是语言结构, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串
echo -- 输出一个或者多个字符串 Description void echo ( string arg1 [, string ...] ) //返回值为空 echo " 你好" ," 朋友" ;
print --输出一个字符串 Description int print ( string arg )//返回值为整形 print " 你好朋友" ;
可以进行下面操作 $name=print " nihao \n" ; $str = 'test print value is $name .'; eval_r(" \$print=\" $str\" ; " ); echo $print;
print_r -- 打印关于变量的易于理解的信息。 bool print_r ( mixed expression_r [, bool return] ) //返回值是布尔型的,参数是mix类型的,可以是字符串,整形,数组,对象类print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 print_r() 将把数组的指针移到最后边。 你可以 print_r(str); print_r(int); print_r(array); print_r(obj); 也可以用var_dump var_export
问题还没解决。。这里肯定有人会有问题,说语言结构啥意思啊。。。不怕。。俺也给百度出来了。。-_-。。。感谢那些资料的贡献者-_-。。。
相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等。
例子:
if ( isset($username[5]) ) {
// The username is at least six characters long.
}
原因是isset是语言结构,而strlen是一个函数。那什么是语言结构呢?它和函数有什么不同吗?
1、 什么是语言结构和函数
语言结构:就是PHP语言的关键词,语言语法的一部分;它不可以被用户定义或者添加到语言扩展或者库中;它可以有也可以没有变量和返回值。
函数: 由代码块组成的,可以复用。
2、 语言结构为什么比函数快
原因是在PHP中,函数都要先被PHP解析器分解成语言结构,所以有此可见,函数比语言结构多了一层解析器解析。这样就能比较好的理解为
什么语言结构比函数快了。
3、 语言结构和函数的不同
l 语言结构比对应功能的函数快
l 语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节
l 语言结构不能在配置项(php.ini)中禁用,函数则可以。
l 语言结构不能被用做回调函数
4、 语言结构列表
l echo()
l print(),没错,这是一个语言结构 //现在php 5.4好像降级成函数了,没去考究。用print()真的太少了..
l die()
l isset()
l unset()
l include(),没有include_once()
l require(),没有require_once()
l array()
l list()
l empty()
以上的总结参考了两个人的地址这里贴出来
http://hi.baidu.com/microji/item/1d92eedec572321ad68ed003
http://blog.sina.com.cn/s/blog_475429950100hk75.html