我有一个像:
这样的数组Array
(
[0] => Array
(
[id] => 1367
[category_value] => 15
[isepisode] => 0
[title] => hello world
)
[1] => Array
(
[id] => 9892
[category_value] =>
[isepisode] => 0
[title] =>
)
[2] => Array
(
[id] => 9895
[category_value] =>
[isepisode] => 0
[title] => Bla Bla
)
)
我想删除那些title
为空的数组。
这是我的代码:
$res = array_map('array_filter', $data);
print_r(array_filter($res)); exit;
上面的代码只删除那些数组值为空。但我想删除标题为null的整个数组。我的输出应该是:
Array
(
[0] => Array
(
[id] => 1367
[category_value] => 15
[isepisode] => 0
[title] => hello world
)
[2] => Array
(
[id] => 9895
[category_value] =>
[isepisode] => 0
[title] => Bla Bla
)
)
注意:我有数千个阵列。如果放在foreach这将需要时间来执行。有没有最简单的方法呢?
答案 0 :(得分:2)
正确array_filter()
方法:
$result = array_filter($arr, function($a){ return $a['title']; });
答案 1 :(得分:1)
您可以在array_filter
中使用回调参数。例如:
$result = array_filter($data, function($entry) {
return ! empty($entry['title']);
});
print_r($result);
更好的是,如果您查看文档的user contributed notes部分,则可以看到:
如果您希望快速删除
NULL
,FALSE
和空字符串(""),但保留0
(零)的值,可以使用标准的php函数strlen作为回调函数:e.g:
<?php // removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values $result = array_filter( $array, 'strlen' );
答案 2 :(得分:0)
您可以将array_filter()
与实现过滤规则的自定义回调函数一起使用:
$res = array_filter
$data,
function (array $item) {
return strlen($item['title']);
}
);
对于0
为空字符串(或title
)的项,回调函数返回NULL
。 array_filter()
从提供的数组中删除这些条目。
答案 3 :(得分:0)
如果您想使用foreach()
执行此操作,请尝试以下操作:
$array = array(array('id'=>1,'title'=>'john'),array('id'=>2,'title'=>''),array('id'=>3,'title'=>'mike'));
foreach($array as $key => $val){
if($val['title']==''){
unset($array[$key]);
}
}