phpempty函数使用说明
使用 函数 说明 PHPempty
2023-06-13 09:14:11 时间
Determinewhetheravariableisconsideredtobeempty.
但是在我的记忆中,有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。
最近对php内核产生了兴趣,又再次想起了这个问题,于是按照别人的经验写了以下一段代码:
复制代码代码如下:
但是在我的记忆中,有很长一段时间一直以为empty应该是能够判断一个东西是否为空的,直到有一天我像这样“empty(trim($a))”使用的时候出现了error,然后查手册才知道了原来empty函数只能判断一个变量是否为空,而不能判断一个字符串(或者其他的值,包括函数返回值)为空。虽然知道了这只是一个表层的原因,但是却没有再去了解深层次的原因。
最近对php内核产生了兴趣,又再次想起了这个问题,于是按照别人的经验写了以下一段代码:
<?php
echo"<pre>";
$tokens=token_get_all("<?phpempty(trim($a));?>");
foreach($tokensas$t){
if(is_array($t)){
printf("%s\t%s\n",token_name($t[0]),htmlspecialchars($t[1]));
}else{
printf("\t%s\n",$t);
}
}
结果输出如下:(这个如果不理解就看一下php手册附录的“ListofParserTokens”那部分吧)
T_OPEN_TAG<?php
T_EMPTYempty
(
T_STRINGtrim
(
T_VARIABLE$a
)
)
T_CLOSE_TAG?>
变量对应的token应该是T_VARIABLE,而trim($a)对应的是T_STRING。所以如果直接运行“empty(trim($a));”会导致运行错误:
Fatalerror:Can"tusefunctionreturnvalueinwritecontext
后来我想直接empty一个字符串会怎么样呢?结果导致的并不是运行错误,而是解析错误:
Parseerror:parseerror,expecting`T_STRING"or`T_VARIABLE"or`"$""in...
(感觉这个错误信息让人。。。)
查看字符串对应的token是T_CONSTANT_ENCAPSED_STRING(字符串语法)。虽然参数对于的token有所不同,但是他们都不是T_VARIABLE,应该在编译的阶段就出现错误才对,为什么。。。
于是也学着那些高人们查看php的源码来了。。。不过还没读懂相关的代码,呵呵,下次再分享~
最后重申一次,empty是语言结构,而非函数!
(和print,echo,include,require,die等等一样都是语言结构,网上某些文章说print有返回值就说是函数是不对的)
相关文章
- stat函数的使用说明[通俗易懂]
- Oracle中MONTHS_BETWEEN函数的使用
- systick的使用方法_cleardevice函数
- 【说站】css中skew函数的使用
- 【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
- mysql时间戳格式化函数from_unixtime使用的简单说明
- mysql 时间戳格式化函数from_unixtime使用说明详解数据库
- MySQL查询:使用日期时间函数(mysql日期查询)
- 使用Oracle函数格式化日期和时间(oracle格式化函数)
- 函数使用MySQL中的conv函数实现各种进制转化(mysqlconv)
- MySQL如何加入函数及使用方法(mysql加函数)
- 使用Oracle天数函数计算日期差值(oracle 天数函数)
- 函数Oracle数据库下使用AVG函数的实践(oracle中查询avg)
- Oracle AVG函数的应用示例及其使用方法(oracle avg用法)
- Eval函数|Execute语句|ExecuteGlobal语句使用说明
- 用PHP控制用户的浏览器--ob*函数的使用说明
- phpheader()函数使用说明
- Javascript中Eval函数的使用说明
- PHPstrtr()函数使用说明
- php魔术函数使用说明
- javascript函数使用说明
- PHP魔术函数使用说明
- phparray_map()数组函数使用说明
- MySQL的字符串函数使用说明
- php函数中使用static的说明
- JS数学函数Exp使用说明
- 解析PHP缓存函数的使用说明
- Perleval函数使用实例