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

Reply via email to