删除二维数组某个特定的值

newnoder 发布于 2014/08/11 19:53
阅读 2K+
收藏 0
PHP

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

$arr =array(
        array('id'=>100,'name'=>'php'),
	array('id'=>110,'name'=>'js'),
	array('id'=>120,'name'=>'python')
);

$id= 100;

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

删除id为100的一维数组,还有什么更好的办法?



加载中
0
Micooz
Micooz
foreach ($arr as $key => $value) {
     if($value['id'] == 100)
         unset($arr[$key])
}



n
newnoder
大数组循环里unset不好吧
0
n
newnoder
$arr2=array_filter($arr,function($a) use($id){
	return !in_array($id,$a);
});
print_r($arr2);

这个还好吧



0
inuxor
inuxor
$arr =array(
    array('id'=>100,'name'=>'php'),
    array('id'=>110,'name'=>'js'),
    array('id'=>120,'name'=>'python')
);

$new_arr = array_filter($arr, function($item){ return $item['id'] != 100; });
var_dump($new_arr);



0
n
newnoder
$new_arr = array_map(function($k) use($id){
if(!in_array($id,$k)) return $k;
},$arr);

print_r($new_arr);



0
小小小小码农
小小小小码农

引用来自“newnoder”的评论

$new_arr = array_map(function($k) use($id){
if(!in_array($id,$k)) return $k;
},$arr);

print_r($new_arr);



  这里还是会有个问题,最后还是需要用array_filter( ) 函数过滤一次里面空数组

array(4) {
  [0] => NULL
  [1] => NULL
  [2] => array(2) {
    ["id"] => int(110)
    ["name"] => string(2) "js"
  }
  [3] => array(2) {
    ["id"] => int(120)
    ["name"] => string(6) "python"
  }
}



n
newnoder
谢谢指正
0
s
sp村长
array_walk($arr,function(&$v,$k,$id) use (&$arr){
    if( $v['id']==$id )
    {
        unset( $arr[$k] );
    }

},$id);


========

这样也是可以的,但是在性能方面,这比 foreach 低的不是一点点

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部