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()issetstrlen执行速度快等。

例子:

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

 

 

 

posted on 2013-03-24 10:49  m1001m  阅读(1321)  评论(0编辑  收藏  举报

导航