> The “any” check is just to if anything in the iterable passes the predicate, 
> yeah??
> 
> What I find myself doing more often is wanting the first thing to satisfy the 
> predicate - a “first” function, if you will.

There's multiple things such a function could return - The key of the entry 
(could be false/null), the value of the entry (could be false/null), or a 
combination of the key and value (rarely what we want).

I'm not aware of any exact matches for that - array_filter processes all 
values, and array_search doesn't accept a callback.
`array_search_callback()` could be added, but I don't plan to expand the scope 
of this RFC and there are multiple ways to do that.

> This could skip the step of iterating to find of something satisfies the 
> predicate. Then iterating again to get one or more items that do satisfy it.
> 
> Trying to think of a use case where I would want to check, but not do 
> anything with that knowledge.

Anywhere where you'd want to check for membership in a short-circuiting way, 
similar to situations where `||` or `&&` would be called,
but with a variable number of callbacks or repeating the same operation 
multiple times.
It also reduces the indentation and line count needed

```
$this->assertTrue(all($valueList, fn($v) => $v->isValid()));

all($startupCallbacks, 'call_user_func') || exit("startup failed");

if (any($fieldList, fn($field) => in_array($field->name, ['fooEnabled', 
'fooEnabled2']))) {
    doFoo();
}
```

- Tyson

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

Reply via email to