【发布时间】:2016-12-15 16:14:36
【问题描述】:
如果您想从数组中删除空值,那么通过简单的array_filter() 传递它们并使用内置的isset() 函数似乎是一个不错的选择:
$dairyFree = true;
$toppings = [
'tomato',
'oregano',
'pepperoni',
($dairyFree) ? null : 'cheese',
];
$toppings = array_filter($toppings, 'isset');
很简单,但是在array_filter() 中使用isset() 会引发以下警告:
警告:array_filter() 期望参数 2 是有效的回调,未找到函数 'isset' 或无效的函数名。
将相同的代码包装在闭包中很容易,但我的问题是——为什么 php 会拒绝 isset() 函数而不是其他内部函数,例如 strlen()?
【问题讨论】:
-
你应该写一个自定义函数,在里面调用isset。
-
因为这是一种语言结构而不是函数,所以不能使用变量函数调用它。 或者在需要函数的地方使用。
标签: php