> 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