Converting string elements of an array to upper and lower case, maintaining names of keys
Is there any possible way to somehow use implode and explode to get around this (convert to string while somehow keeping key names in memory)?


You can get all the keys using array_keys then combine them with array_combine.

$upperCase = array_combine(array_keys($Color), explode(',', strtoupper(implode(',', $Color))));
print_r($upperCase);


But why do all these efforts? Your solution is perfect, you could not do better.


  should this sort of operation be done with one function rather than the two


If you have no need to do anything else but convert the text in lowercase/uppercase, then just call 

print_r(array_map('strtoupper', $Color));



  Is it good practise to implement such guard conditions in my own code at this point?


It is advisable when you do not know the data you're working. It is not in this case.