参考:
可是tammd在php manual中实在是误导,大家可能都知道echo 是个语言结构,好像很神秘,其实就是关键字,只是在php中有些关键字很像函数,也有 参数,甚至有返回值,可恶的PHP Manual中将类似echo的关键字的说明放到了function.XXX这种链接里面,而将关键字列表放到了附录里面,啃die啊如: ,这不明摆着说你 echo是个函数吗!!!每次面试或者高手们都会拿这些函数样的关键字 做考题,fuuuuuuccckkkk. 下面列举一下PHP5中的关键字,以及像函数的关键字1、 什么是语言结构和函数
语言结构: 就是PHP语言的关键词,语言语法的一部分; 它不可以被用户定义或者添加到语言扩展或者库中; 关键字也可以有参数和返回值。 函数: 由代码块组成的,可以复用。 2、 语言结构为什么比函数快 原因是在PHP中,函数都要先被PHP解析器分解成语言结构,所以函数比语言结构多了一层解析器解析。 这样就能比较好的理解为 什么语言结构比函数快了。 3、 语言结构和函数的不同
- 语言结构比对应功能的函数快
- 语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节
- 语言结构不能在配置项(php.ini)中禁用,函数则可以。
- 语言结构不能被用做回调函数
2、
这页会给出关键字自哪个版本开始有的,比较凌乱分个类吧,关键字都是不区分大小写的类型 callable (as of PHP 5.4) function static var global const流程控制 break switch case default try catch continue do while else elseif endfor declare enddeclare endforeach endif endswitch endwhile final finally (as of PHP 5.5) for foreach goto (as of PHP 5.3) if return throw yield (as of PHP 5.5) use逻辑 and xor or面向对象 abstract class as clone extends implements instanceof insteadof (as of PHP 5.4) interfacenamespace (as of PHP 5.3) new private protected public trait (as of PHP 5.4)令人迷糊的函数式关键字 __halt_compiler()array()die()empty()echo()eval()exit()isset()list()print()unset()include() include_once()require()require_once()
还有很多预定义的常量
__CLASS__ __DIR__ (as of PHP 5.3) __FILE__ __FUNCTION__ __LINE__ __METHOD____NAMESPACE__ (as of PHP 5.3) __TRAIT__ (as of PHP 5.4)
使用function_exist('func_name'), 如果传入 关键字 则也返回FALSE的
狗血的echo
$s = '12345';//字符串就是char数组,php的数组本质上是带双向链表的hashtable$s[$s[1]] = '2' ;echo $s . "";echo 1+2+"3+4+5"; 算术运算符从左至右 解析 数字,直到碰到非数字字符echo "";echo 1>>0;echo 2>>1;右移除2echo 3<<2;左移乘2echo "";echo true; 1echo false; 不显示任何东西echo function_exists('include_once');
结果:12245611121
echo "true";echo "false";echo 'true';echo 'false';结果:
truefalsetruefalse
再次重申 echo FALSE;什么也不输出