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?
Although, this question is too old and there are several answer are there for this question, but I am posting a solution that might be useful to someone.
You may get the all array elements from provided input except the certain keys you've defined to exclude using:
$result = array_diff_key($input, array_flip(["SomeKey1", "SomeKey2", "SomeKey3"]));
This will exclude the elements from $input
array having keys SomeKey1
, SomeKey2
and SomeKey3
and return all others into $result
variable.