在php中删除Array中的一些数据

时间:2017-12-13 07:02:25

标签: php arrays multidimensional-array

我想从PHP中的数组中删除一些数据。这是数组:

array(4) {
    [0]=> array(1) { ["image"]=> string(20) "w85YrKChBGTZ9fQS.jpg" }
    [1]=> array(1) { ["image"]=> string(20) "3buahEs6rRWFdYez.jpg" }
    [2]=> array(1) { ["image"]=> string(20) "gYPtDrx3sFzkVENB.jpg" }
    [3]=> array(1) { ["image"]=> string(20) "JE3rodDvs6521cFm.jpg" }
} 

这是我的方法,我要删除的地方:

public function deleteImage(){
    foreach (getCarImages() as $array){
        //var_dump($array).'<br>';
        $index = array_search('w85YrKChBGTZ9fQS.jpg',$array);
        if($index !== FALSE){
            var_dump($index).'<br>';
            unset($array[$index]);
        }else{
            echo '<br>else here';
        }
    }
}

这是deleteImage()

的结果
  

string(5)“image”

     

其他

     
    

这里

  
     

其他

     
    

这里

  
     

其他

     
    

这里

  

我很困惑。如何从主数组中删除嵌套数组。

2 个答案:

答案 0 :(得分:2)

如果需要从数组中删除整个子数组,请使用array_flter函数:

public function deleteImage(){
    return array_filter(getCarImages(), function ($v) {
        return $v['image'] != 'w85YrKChBGTZ9fQS.jpg';
    });
}

更新:匿名函数不了解$imageName变量。你必须use

public function deleteImage($imageName = null) 
{ 
    $myarray = array_filter(
        getCarImages(), 
        function ($v) use ($imageName) { return $v['image'] != $imageName; }
    );
}

答案 1 :(得分:1)

您可以将图像作为参考函数进行转换。

public function deleteImage(&$images){
    foreach ($images as $k => $array){
        //var_dump($array).'<br>';
        $index = array_search('w85YrKChBGTZ9fQS.jpg',$array);
        if($index !== FALSE){
            var_dump($index).'<br>';
            unset($images[$k]);
        }else{
            echo '<br>else here';
        }
    }
}