将函数嵌套在PHP中

5

简单的PHP问题:

为什么这个能够工作呢,

$exclude_exts = array('js', 'css',);
$filename = "test.css";
$ext = explode('.',$filename);
$is_excluded = in_array(strtolower(array_pop($ext)), $exclude_exts);

但这个不行。
$exclude_exts = array('js', 'css',);
$filename = "test.css";
$is_excluded = in_array(strtolower(array_pop(explode('.',$filename))), $exclude_exts);

修改:这两个在以前的PHP版本中都可以工作(我忘记是哪个版本了)。

1个回答

10
因为array_pop需要一个引用,因为它会直接改变数组。 当你传递explode的返回值时,没有变量可以引用。

@Ameer 在之前的 PHP 版本中它没有起作用。它从来没有起过作用。 - Colin M
@Ameer 我认为它没有起作用。它可能没有崩溃,但最好的情况下也会很不稳定。PHP5.4对这些问题引入了一些更严格的检查(这是好事!),你可能正在经历这种情况。 - Alexander Olsson
4
目前正在测试以确定此代码在之前的版本中是否有效-http://3v4l.org/4I9Xh#tabs-看起来在PHP 5.0.5之前它有效;但自那时以来产生了一个严格标准警告。 - Mark Baker
是的,我非常确定它在之前的版本中可以运行。当我的主机升级到PHP 5.4时,这是我的代码唯一的问题。 - Ameer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接