Hi David,
thanks for your brainstorming suggestions. My opinion on the options:
1. Keys being stored as reference:
$valueOutput = array_first(array $array, ?string &$keyOutput = null);
In my opinion using references to return additional values from a
function is quiet hacky. I think returning a single value leads to
significantly clearer code and thus supports the developer.
2. Function will returns value or key, by option (similar to
array_filter()):
array_first(array $array, int $options = ARRAY_VALUE);
array_first(array $array, int $options = ARRAY_KEY);
This violates the single responsibility principle and consequently isn't
a good move
3.
F
unction will returns value or key, by boolean argument:
array_first(array $array, bool $returnKeyInsteadOfValue = false);
array_first(array $array, bool $returnKeyInsteadOfValue = true);
Compare 2.
4. Specific method to return key instead of value:
array_first(array $array);
array_first_key(array $array);
This is the RFC just with slightly different function names. I think
using array_key_first and array_value_first (and the corresponding
functions for the last array element) provides a consistent naming.
5. Consider that keys could be obtained via array_keys(), so array_first()
should just care about values:
array_first(array_keys($array));
This solution requires a copy of the array (keys) which extends the time
complexity and the memory usage of the task.
Regards,
Enno