foreach($array as $key => $value)
if (strlen($value) == 0)
unset($array[$key]);
Run Code Online (Sandbox Code Playgroud)
有这么多内置数组函数,有没有这样做?
Pas*_*TIN 12
我想你可以使用array_filter,做那种事情(引用):
迭代输入数组中的每个值,将它们传递给回调函数.
如果回调函数返回true,则输入中的当前值将返回到结果数组中.
数组键被保留.
而且:
如果没有提供回调,则将删除所有输入等于
FALSE(参见 转换为布尔值)的条目.
例如,使用类似这部分代码:
$array = array(
'test' => 'glop',
'a' => 123,
'b' => '',
'c' => 'blah',
'd' => '',
);
$array = array_filter($array);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)
你会得到以下输出:
array
'test' => string 'glop' (length=4)
'a' => int 123
'c' => string 'blah' (length=4)
Run Code Online (Sandbox Code Playgroud)
我没有使用回调函数,这意味着所有"空"值都被删除了 ;; 棘手的部分是,如果我输入了0它的值,它也会被删除...
根据你的情况,这是否可以接受......所以也许你更喜欢使用特定的回调函数来完成你想要的,并且可以更好地控制过滤掉的内容?
这是一个带回调函数的例子:
$array = array(
'test' => 'glop',
'a' => 0,
'b' => '',
'c' => 'blah',
'd' => '',
);
function my_function($a) {
if ($a === '') {
return false;
}
return true;
}
$array = array_filter($array, 'my_function');
var_dump($array);
Run Code Online (Sandbox Code Playgroud)
(注意'a' => 0数组中的行)
我们现在得到:
array
'test' => string 'glop' (length=4)
'a' => int 0
'c' => string 'blah' (length=4)
Run Code Online (Sandbox Code Playgroud)
即使用回调函数允许我们更清楚地指定应该过滤掉的内容 (这里,包含完全空字符串的行,没有类型转换).
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |