Kan*_*iya 31 php arrays array-filter
我想删除NULL,FALSE和''值.
我用过,array_filter但它也删除了0.
是否有anty功能来做我想要的?
array(NULL,FALSE,'',0,1) -> array(0,1)
Run Code Online (Sandbox Code Playgroud)
Max*_*ens 46
array_filter如果使用identical比较运算符,应该可以正常工作.
$values = [NULL, FALSE, '', 0, 1];
function myFilter($var){
return ($var !== NULL && $var !== FALSE && $var !== '');
}
$res = array_filter($values, 'myFilter');
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想定义过滤函数,还可以使用匿名函数(闭包):
$res = array_filter($values, function($value) {
return ($value !== null && $value !== false && $value !== '');
});
Run Code Online (Sandbox Code Playgroud)
如果您只需要数值,可以使用is_numeric作为回调:示例
$res = array_filter($values, 'is_numeric');
Run Code Online (Sandbox Code Playgroud)
Vla*_*nko 38
来自http://php.net/manual/en/function.array-filter.php#111091:
如果要删除NULL,FALSE和Empty Strings,但保留值为0,则可以使用strlen作为回调函数:
array_filter($array, 'strlen');
Run Code Online (Sandbox Code Playgroud)
array_filter不起作用,因为默认情况下,它会删除任何等价的东西FALSE,并且PHP认为0它等同于false.在PHP手册中有这样一段关于这个问题说:
转换为布尔值时,以下值被视为FALSE:
- 布尔值FALSE本身
- 整数0(零)
- 浮点数0.0(零)
- 空字符串,字符串"0"
- 一个零元素的数组
- 一个零成员变量的对象(仅限PHP 4)
- 特殊类型NULL(包括未设置的变量)
- 从空标签创建的SimpleXML对象
每个其他值都被视为TRUE(包括任何资源).
你可以传递第二个参数,array_filter回调你自己编写的函数,告诉你array_filter是否删除该项.
假设您要删除除零之外的所有FALSE等效值,这是一个简单的函数:
function RemoveFalseButNotZero($value) {
return ($value || is_numeric($value));
}
Run Code Online (Sandbox Code Playgroud)
然后你只需用过滤后的数组覆盖原始数组:
$array = array_filter($array, "RemoveFalseButNotZero");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20466 次 |
| 最近记录: |