1

指定したものから離れた配列からすべてのフィールドを削除する賢明な方法はありますか?

の行に沿って何かarray_diffがうまくいくと思っていますが、許可したいフィールドキーのみをリストしてから、「他のすべてをドロップ」と言います。それを行う最善の方法は何ですか?

どうもありがとう

4

2 に答える 2

6

array_intersect_key()は、配列のコピーに問題がない場合に機能するはずです。

$arr = array(
    'A' => 'alpha',
    'B' => 'bravo',
    'C' => 'charlie',
    'D' => 'delta'
);

$allowedKeys = array('B', 'C');

print_r(array_intersect_key($arr, array_flip($allowedKeys)));

# Array
# (
#    [B] => bravo
#    [C] => charlie
# )

それ以外の場合は、foreachループを使用できます。

foreach ($arr as $key => $value) {
    if (!in_array($key, $allowedKeys)) {
        unset($arr[$key]);
    }
}
于 2013-01-04T10:41:21.653 に答える
0

以下のコードを試してください..それはあなたのために働くかもしれません

foreach($array as $key=>&$value) {
        if($key!='yourx') {
            unset($array[$key])
        }
    }
于 2013-01-04T10:38:07.790 に答える