Page

[转载]PHP使用empty检查函数返回结果时报Fatal error: Can't use function retu

676Anson16-07-28


今天看博客留言板是突然发现报错了,奇怪我博客程序都没有动过,除了把php版本由5.6改为5.4之外。可能就是版本不同导致部分函数的用法有所改变。最后发现是empty()这个函数的问题。

PHP开发时,当你使用empty检查一个函数返回的结果时会报错:Fatal error: Can't use function return value in write context

例如:

<?php
echo empty(strlen('be-evil.org'));

到PHP手册里面查看,在empty函数描述的地方有以下文字:

Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

empty() 只检测变量,检测任何非变量的东西都将导致解析错误!

因此,我们不能拿empty来直接检测函数返回的值,上面例子的解决方案如下:

<?php

$length = strlen('be-evil.org');

echo empty($length);




ps:

Note:

在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。换言之,下列代码不会生效: empty(trim($name))。 作为替代,应该使用trim($name) == false.

没有警告会产生,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

更新日志

版本说明
5.5.0

empty() 现在支持表达式了,而不仅仅是变量。


总结,原来是php5.5版本之前empty()只支持变量,现在函数、表达式都可以放进去了!




转自网络

2016年7月28日