3

ここに私の配列があります:

$not_wanted = array('example1', 'example2');

$from_this_array= array(

'example1'=>'value1',
'example2'=>'value2',
'should_stay'=>'value3'

)

最後に私が持っている必要があります

array('should_stay'=>'value3')

私が試してきたことは、それは病気を持っています

public function aaData($array){
    $aaData =array();
    foreach ($array as $key=>$item){        
        if(array_key_exists($key, $this->unset_array)){
            unset($array[$key]);
            $aaData[] = $item;
        }
    }
    var_dump($aaData);
    return $aaData;
}
4

4 に答える 4

2

1 つの可能なアプローチ:

$not_wanted = array('example1', 'example2');
$from_this_array= array(
  'example1'=>'value1',
  'example2'=>'value2',
  'should_stay'=>'value3'
);

print_r(array_diff_key(
  $from_this_array, array_flip($not_wanted)));

デモ

array_diffは、キーではなく値をチェックするため、ここでは関係ないことに注意してください。最初の ( $not_wanted) 配列には値が含まれているため、array_diff_keyを使用するには反転 (ハッシュに変換) する必要があります。

于 2013-02-27T22:13:49.790 に答える
1

記録のために、コードの作業バージョンを次に示します。

function aaData($array){
    $aaData =array();
    foreach ($array as $key=>$item){        
        if(!in_array($key, $this->unset_array)){
            $aaData[$key] = $item;
        }
    }
    var_dump($aaData);
    return $aaData;
}

除外する必要があるキーを格納する配列で使用しましたが、この配列ではキーではなく値であるため、代わりにarray_key_exists必要です。また、変更された配列のみを返すため、元の配列でin_array()行うことは意味がありませんでした。unset()

デモ

于 2013-02-27T22:19:49.083 に答える
0

ただ行う:

foreach ($from_this_array as $key => $val) {
   if (in_array($key, $not_wanted)) {
      unset($from_this_array[$key]);
   }
}

実際のデモを見る

于 2013-02-27T22:20:17.047 に答える
0
function aaData($array, $not_wanted){
  foreach ($not_wanted as $key){        

    if(isset($array[$key])){
        unset($array[$key]);
    }
}
return $array;
}

$not_wanted = array('example1', 'example2');

$array= array(

'example1'=>'value1',
'example2'=>'value2',
'should_stay'=>'value3'

);

print_r(aaData($array, $not_wanted));
于 2013-02-27T22:22:38.630 に答える