返回除给定键之外的所有数组元素

2022-08-30 12:46:51

很简单,我只是想知道是否有一种干净而雄辩的方法可以返回与给定键不匹配的关联数组中的所有值?

$array = array('alpha' => 'apple', 'beta' => 'banana', 'gamma' => 'guava');

$alphaAndGamma = arrayExclude($array, array('alpha'));
$onlyBeta      = arrayExclude($array, array('alpha', 'gamma'));

function arrayExclude($array, Array $excludeKeys){
    foreach($array as $key => $value){
        if(!in_array($key, $excludeKeys)){
            $return[$key] = $value;
        }
    }
    return $return;
}

这就是我(将要)使用的,但是,是否有更干净的实现,也许我在手册中错过了什么?


答案 1

虽然,这个问题太旧了,这个问题有几个答案,但我发布了一个可能对某人有用的解决方案。

您可以从提供的输入中获取所有数组元素,但您定义要排除的某些键除外:

$result = array_diff_key($input, array_flip(["SomeKey1", "SomeKey2", "SomeKey3"]));

这将从数组中排除具有键的元素,并将所有其他元素返回到变量中。$inputSomeKey1SomeKey2SomeKey3$result


答案 2

您可以取消设置该值:

$alphaAndGamma = $array;
unset($alphaAndGamma['alpha']);

编辑:使它更清晰。可以通过将数组分配给另一个变量来复制数组。

或在函数中:

function arrayExclude($array, Array $excludeKeys){
    foreach($excludeKeys as $key){
        unset($array[$key]);
    }
    return $array;
}

推荐