2016-08-04 5 views
1

私のコードでforeachループを使いたくないので、配列の配列要素を配列からアンセットするので、以下のコードを試しましたが、期待通りに動作しません。配列から値をアンセットするArray_Filter

<?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; 

キー 'イメージ'を配列から削除したいが、このコードは実際の配列を返す。

このコードのエラーは何ですか?

答えて

1

使用array_mapを()代わりarray_filter

array_map()はあなたの配列の各値をマップし、実行新しい操作に新しい値を持つ新しい配列が作成されますを使用します。ここ

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

array_mapを()ためReference Linkあります。

1

あなたは新しい配列を割り当てずに既存のアレイを更新することにより、

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

print_r($arr1); 
0

あなたはこれを行うことができます代わりにarray_filter()の()array_mapを使用することができます

あなたはこれを使用することができます:

array_walk($ararray_walk($arr, function(&$v, $k) { // Pass the values by reference 
    if(array_key_exists('images', $v)){ 
     unset($v['images']); 
    } 
}); 
print_r($arr); 

Demo

関連する問題