Array_filter从数组中取消设置值

时间:2016-08-04 05:39:08

标签: php arrays

我不想在我的代码中使用foreach循环并从数组中取消设置数组元素,所以我尝试了下面的代码,但它没有按预期工作。

<?php 
$arr = array(array('0'=>'test','1'=>'test1','images'=>'data'),array('0'=>'test','1'=>'test1','images'=>'data'),array('0'=>'test','1'=>'test1','images'=>'data'),array('0'=>'test','1'=>'test1','images'=>'data'));
$arr1 = array_filter($arr,function ($item) use ($my_value) {    
    if(array_key_exists('images',$item)) {unset($item['images']);}
    return $item;});
    echo "<pre>";
    print_r($arr1);
    echo "</pre>";
    die;

我想从数组中删除键'images',但这段代码会返回实际的数组。

此代码中的错误是什么?

3 个答案:

答案 0 :(得分:2)

使用 array_map(),而不是使用array_filter

array_map()将映射数组的每个值,并使用新值创建一个新数组,并执行新操作。

 $arr1 = array_map(function($tmp) { unset($tmp['images']); return $tmp; }, $arr);

array_map() Reference Link

答案 1 :(得分:1)

您可以使用array_map()而不是array_filter()

$ cat tempfile
1.2.3.4 34
1.2.3.5 23
1.2.3.6 22

$ cat tempfile | logresolve
hostname1 34
hostname2 23
hostname3 22

答案 2 :(得分:0)

您可以通过更新现有阵列而不指定新阵列来实现此目的

您可以使用:

{{1}}

Demo