手机
当前位置:查字典教程网 >编程开发 >php教程 >php empty函数 使用说明
php empty函数 使用说明
摘要:Determinewhetheravariableisconsideredtobeempty.但是在我的记忆中,有很长一段时间一直以为emp...

Determine whether a variable is considered to be empty.

但是在我的记忆中,有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。

最近对php内核产生了兴趣,又再次想起了这个问题,于是按照别人的经验写了以下一段代码:

复制代码 代码如下:

<?php

echo "<pre>";

$tokens = token_get_all('<?php empty(trim($a));?>');

foreach($tokens as $t){

if (is_array($t)){

printf("%s t %s n", token_name($t[0]), htmlspecialchars($t[1]));

}else{

printf("t%sn", $t);

}

}

结果输出如下:(这个如果不理解就看一下php手册附录的“List of Parser Tokens”那部分吧)

T_OPEN_TAG <?php

T_EMPTY empty

(

T_STRING trim

(

T_VARIABLE $a

)

)

T_CLOSE_TAG ?>

变量对应的token应该是T_VARIABLE,而trim($a)对应的是T_STRING。所以如果直接运行“empty(trim($a));”会导致运行错误:

Fatal error: Can't use function return value in write context

后来我想直接empty一个字符串会怎么样呢?结果导致的并不是运行错误,而是解析错误:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'$'' in ...

(感觉这个错误信息让人。。。)

查看字符串对应的token是T_CONSTANT_ENCAPSED_STRING(字符串语法)。虽然参数对于的token有所不同,但是他们都不是T_VARIABLE,应该在编译的阶段就出现错误才对,为什么。。。

于是也学着那些高人们查看php的源码来了。。。不过还没读懂相关的代码,呵呵,下次再分享~

最后重申一次,empty是语言结构,而非函数!

(和print,echo,include,require,die等等一样都是语言结构,网上某些文章说print有返回值就说是函数是不对的)

【php empty函数 使用说明】相关文章:

Content-type 的说明

在PHP中使用XML

PHP中is_dir()函数使用指南

php动态函数调用方法

php函数重载的替代方法

php-fpm 启动参数及重要配置详解

php中smarty模板条件判断用法实例

php的计数器程序

php正则preg_replace_callback函数用法实例

php中file_exists函数使用详解

精品推荐
分类导航