Skip to content
Advertisement

Return all array elements except for a given key

Simple one, I was just wondering if there is a clean and eloquent way of returning all values from an associative array that do not match a given key(s)?

$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;
}

This is what I’m (going to be) using, however, are there cleaner implementations, something I missed in the manual perhaps?

Advertisement

Answer

You could just unset the value:

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

Edit: Made it clearer. You can copy an array by assigning it to another variable.

or in a function:

function arrayExclude($array, Array $excludeKeys){
    foreach($excludeKeys as $key){
        unset($array[$key]);
    }
    return $array;
}
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement