On Tue, Oct 17, 2023 at 11:37 AM Robert Landers
<landers.rob...@gmail.com> wrote:
>
> On Tue, Oct 17, 2023 at 11:34 AM Aleksander Machniak <a...@alec.pl> wrote:
> >
> > On 17.10.2023 11:29, Robert Landers wrote:
> > > $value = array_value_first($array, $key);
> > > if($key === null) // handle error
> > > else // do something with $value
> > >
> > > You can also freely ignore the key, if you don't need it or care about
> > > error checking. That would save doing two function calls on the same
> > > array, just to do some error checking.
> > >
> >
> > Please, no. What's wrong with count() or empty()?
> >
> > +1 for array_first() and array_last(). The only problem is probably a
> > big BC break. I myself have array_first() defined in my framework.
> >
> > --
> > Aleksander Machniak
> > Kolab Groupware Developer        [https://kolab.org]
> > Roundcube Webmail Developer  [https://roundcube.net]
> > ----------------------------------------------------
> > PGP: 19359DC1 # Blog: https://kolabian.wordpress.com
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: https://www.php.net/unsub.php
> >
>
> Hey Aleksander,
>
> > Please, no. What's wrong with count() or empty()?
>
> Nothing. Why not either one? You don't have to use the $key variable
> and you can use count() or empty(), but for me personally, it makes a
> lot of sense.

Ah, I just realized why it makes a lot of sense, and that is when
Fibers get involved. The value and key could change underneath you
from one function call to another.

$key = array_key_first($this-array);

// call something that suspends a fiber and results in $this->array
being mutated

$value = array_value_first($this->array);

// $value and $key may now point to two totally separate things.

I've been bitten by this with Fibers a few times now (or things very
similar to it).

Having a way to atomically get $key and $value would be a boon, not a hindrance.

Robert Landers
Software Engineer
Utrecht NL

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to