PHP致命错误.empty()是否尝试改变传递给它的结果?

Chi*_*oft 3 php

今天在PHP中遇到一个奇怪的问题,我想知道是否有人可以解释它.在比较两个数组时,我最初尝试过这样的事情:

echo empty(array_diff( array('foo','bar') , array('bar','foo') ))
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

致命错误:无法在写上下文中使用函数返回值

将此重写为......

$dif = array_diff( array('foo','bar') , array('bar','foo') );
echo empty($dif);
Run Code Online (Sandbox Code Playgroud)

......工作得很好 空应该只是评估传递给它的值,而不是写入它,所以这里出了什么问题?在PHP 5.2.10和PHP 5.3.2中进行了测试.


我已经通过使用!count()代替而解决了这个问题empty(),但我很好奇为什么它首先不起作用.正在empty()试图改变从结果array_diff

Uni*_*ron 10

检查空()手册:

注意: empty()仅检查变量,因为其他任何内容都会导致解析错误.换句话说,以下方法不起作用:empty(trim($name)).

empty(),例如,echo()die(),是一种语言结构,因此具有不同于正常函数的规则(在其中您的示例可以正常工作).