On Wed, Oct 18, 2023 at 2:49 PM Brandon Jackson <brandonja...@gmail.com>
wrote:

> > The only portion in your email I disagree with is this ending. I believe
> there are enough use-cases where if the first value is "valid null" or
> "default null" it won't matter. The developer will treat them both the
> same. Perhaps you disagree with this and want to avoid ambiguity at all
> costs. My proposal to avoid ambiguity would be throwing an exception
> instead of involving the key because involving the key can be a composition
> between `array_first()`* and `array_key_first()`.
> >
> > Although I would prefer the function to throw, I think it will have the
> same effect as this key discussion: complicate something that can be
> simple. If the developer needs to distinguish between "default null" and
> "value null", they are able to do so by running `empty()` on the array
> prior to asking for `array_first()`. It's actually better than a try/catch,
> to be honest.
>
> Sure in many use cases undefined and null can be equivalent, but there
> are other use cases and considering the fact that php does not have a
> user level "undefined" value. It should at least attempt to not be
> ambiguous when possible. Instead of being ambiguous by default,
> requiring the user to do additional work to not be ambiguous.
>
> I do think the method is a great opportunity to avoid ambiguity,
> without a huge sacrifice on cost. As you said, throwing an exception
> would only further complicate things. Sure an empty check would get
> the job done, but again I believe it should not require such
> additional logic just to not be ambiguous.
>

My statement about throwing exceptions is, to me, exactly equivalent to the
discussion of $key and $value. I believe being ambiguous is fine in this
case. If we collectively decide that ambiguity is unacceptable, then my
vote is on Exception over involving $key on `array_first()`. I would go as
far to say that if the only option is to have `array_first()` returning
$key and $value simultaneously, I probably would prefer if `array_first()`
does not get implemented at all.


> > * If naming is an issue to you, I'd also be fine with
> `array_value_first()`.
> If the rfc does maintain only returning the value
> `array_value_first()` IMO is ideal.
> * With array_first being so general, I would think it's only fair that
> the naming is reserved for something that touches on multiple parts of
> the array.
>   * If someone did want to open an rfc adding the above functionality
> they would have to opt for something like array_first_key_value which
> having a group of key/value operator methods `array_key_first`,
> `array_first`, and `array_first_key_value` would be absolutely
> atrocious IMO.
> * Naming consistency with array_key_first would be nice. For new
> comers to the language I think it is a reasonable assumption when you
> see array_key_first being used. That array_value_first should also
> exist that does the same thing for values, and array_first might be a
> slight curve ball.
>   * They are going to do some googling and probably be pointed to some
> outdated way of doing things, like using array slice or back to
> array_key_first. As time goes on blogs and other places like stack
> overflow will update there solutions, and or people will re-ask hoping
> there's a more up to date/efficient solution, and hopefully then
> someone will actually provide the latest answer of `array_first`.
>

Everything you mention about function naming I believe gets invalidated by
Larry's comment regarding all of PHP `array_()` function family. They don't
have `value` in their name when working with array values and they have
`key` when working with array keys. With that, array_first() cannot be
"consistent" with array_key_first() without being inconsistent with dozens
of PHP array functions.

Larry's comment is enough to close down the discussion on the function name
as there's no room for anything other than `array_first()` in my opinion.

-- 
Marco Deleu

Reply via email to