在PHP中,如何方便地删除数组中键位于另一个数组中的项?

在PHP中,如何方便地删除数组中键位于另一个数组中的项?,php,arrays,Php,Arrays,我有两个阵列: $array = new Array('id'=>1, 'name'=>'Peter', 'sex'=>'male', 'age'=>25); $excludes = new Array('sex', 'age'); 我希望得到以下结果: $array = new Array('id'=>1, 'name'=>'Peter'); 在数组$excludes中找到其键的项将被删除 如何方便地实现这一点?只需使用array_diff_键和arr

我有两个阵列:

$array = new Array('id'=>1, 'name'=>'Peter', 'sex'=>'male', 'age'=>25);

$excludes = new Array('sex', 'age');
我希望得到以下结果:

$array = new Array('id'=>1, 'name'=>'Peter');
在数组$excludes中找到其键的项将被删除

如何方便地实现这一点?

只需使用array_diff_键和array_flip功能:

function removeExcludesFromArray($input,$expludes) {
    $newArray = array(); // Create a new empty array
    foreach($array as $inputKey => $inputElement) { // loop your original array
        if(!array_key_exists($inputKey,$excludes)) { // check if key exists
             $newArray[$inputKey] = $inputElement; // add on demand
         }
     }

     return $newArray; // return the result
}


// Call the function
$array = removeExcludesFromArray($array,$excludes);
// $arr is your initial array (besides, don't give `$array` name to arrays)
$result = array_diff_key($arr, array_flip($excludes));
print_r($result);
输出:

Array
(
    [id] => 1
    [name] => Peter
)
只需使用array_diff_键和array_flip函数:

// $arr is your initial array (besides, don't give `$array` name to arrays)
$result = array_diff_key($arr, array_flip($excludes));
print_r($result);
输出:

Array
(
    [id] => 1
    [name] => Peter
)

用于循环和按键取消设置?谢谢!但是我想要一个更方便的方法。事实上,有一个是由@RomanPerekhrest提供的。你可以看到他的答案。为循环和未设置的钥匙?谢谢!但是我想要一个更方便的方法。事实上,有一个是由@RomanPerekhrest提供的。您可以看到他的答案。最好使用PHP本身提供的功能,请参阅其他答案。谢谢!但是我想要一个更方便的方法。事实上,有一个是由@RomanPerekhrest提供的。你可以看到他的答案。无论如何,非常感谢你的帮助!最好使用PHP本身已经提供的功能,请参阅其他答案。谢谢!但是我想要一个更方便的方法。事实上,有一个是由@RomanPerekhrest提供的。你可以看到他的答案。无论如何,非常感谢你的帮助!哇!太酷了!这就是我想要的!非常感谢你!我很高兴这么快就能得到这个美妙的答案!真的非常感谢你@RomanPerekhrest我有一个问题是,这种方法比只做循环更有效?@Avihaym,对于这样小的输入阵列,区别不会是至关重要的。我们可能会在处理大型阵列时开始进行基准测试数千/百万项目W!太酷了!这就是我想要的!非常感谢你!我很高兴这么快就能得到这个美妙的答案!真的非常感谢你@RomanPerekhrest我有一个问题是,这种方法比只做循环更有效?@Avihaym,对于这样小的输入阵列,区别不会是至关重要的。我们可能会在处理成千上万个大型阵列项目时开始进行基准测试