我是阿北,Yii学习社群正在搞技术文竞赛(获胜者送VIP权限),邀请你参加。 另外我的订阅号送书中,看详情
阿北
阿北 发布于 3个月前

2018-02-28 / 一个小问题,但是你一定经常遇到。

反正我是经常遇到,题面相当简单。

请删除一个一维数组中值为空的项,比如下面的代码

$arr = [0=>'a',1=>'b',2=>'c',4=>'',5=>'d',6=>''];
// 结果应该为$arr = [0=>'a',1=>'b',2=>'c',5=>'d'];

要求如下 这个题面没有特别要求,使用PHP函数或你自己写都可以,务必力求简单。

注意:不要查询百度,不要看资料,完全自己想。

///////////////////

我的答案在14楼

1-14条,共14条数据.
刘阿勇
3个月前
# 494

array_map($arr,function($v){ return empty($v); })

王信强
3个月前
# 495

$arr=array_filter($arr);

DW
3个月前
# 496

array_filter

TJ
3个月前
# 497

$arr = array_filter([0=>'a',1=>'b',2=>'c',4=>'',5=>'d',6=>'']); var_dump($arr);

瓜尔佳.维佳
3个月前
# 498
阿超
3个月前
# 499

foreach ($arr as $key => $value) { if ($value != '') { $new_arr[$key] = $value; } }

$arr = $new_arr;

最直接想到的

韩小冷
3个月前
# 500

foreach ($arr as $key => $value) { if(empty($value)){ unset($arr[$key]); } } print_r($arr);

AMor
3个月前
# 501
array_filter($arr);

这也是看阿北emoji的代码中发现的

liurui-M@July
3个月前
# 502

哥,我不会。


+0

妹子,就知道你不会。

不言而喻 。
3个月前
# 504

$arr = [0=>'a',1=>'b',2=>'c',4=>'',5=>'d',6=>'']; $k=array_filter($arr); echo ""; print_r($k);

熊本污
3个月前
# 505

如果不百度的话, 循环判断 unset


3个月前
# 507

3个月前
# 508
阿北
3个月前
# 509

首先感谢大家的回答。

1

这道题目正如很多人的方案一样,我也喜欢使用array_filter。

2

关于@smile提供的使用array_map,这个函数不适用此场景,我们的场景需要将具体为空的数组项删除掉,如你的方法会有如下结果,看代码。

$arr = [0=>'a',1=>'b',2=>'c',4=>'',5=>'d',6=>''];
$result = array_map(function($v){
    if(!empty($v)){
        return $v;
    }
},$arr);

print_r($result);
//结果 Array ( [0] => a [1] => b [2] => c [4] => [5] => d [6] => )  

3

如果你要自定义一个方法也可以,有一点需要注意的是你可以将符合结果的每一项赋给一个新数组,当然你也可以将其unset掉,unset更简洁一点。

$arr = [0=>'a',1=>'b',2=>'c',4=>'',5=>'d',6=>''];
foreach($arr as $key=>$value){
    if(empty($value)){
        unset($arr[$key]);
    }
}
print_r($arr);
// Array ( [0] => a [1] => b [2] => c [5] => d ) 
-
在线