How do I split an associate array into two arrays given the keys that I would like to keep in the first resultant array?
For instance...
//Given:
$myArray=array('a'=>123,'b'=>'ABC','c'=>321,'d'=>'CBA','e'=>111);
$split=array('a','c');
//Obtain all elements who's keys are in $split
$newArray1=array('a'=>123,'c'=>321);
//Obtain all elements who's keys are not in $split
$newarray2=array('b'=>'ABC','d'=>'CBA','e'=>111);
No frills:
$newArray1 = [];
$newArray2 = [];
foreach ($myArray as $key => $value) {
if (in_array($key, $split)) {
$newArray1[$key] = $value;
} else {
$newArray2[$key] = $value;
}
}
Frills:
$newArray1 = array_intersect_key($myArray, array_flip($split));
$newArray2 = array_diff_key($myArray, $newArray1);
See also: array_intersect_key()
array_flip()
array_diff_key()