On Fri, Apr 19, 2024, at 7:34 PM, Joshua Rüsweg wrote:
> Hi
>
> On 10.04.24 00:12, Larry Garfield wrote:
>> Another alternative is to always return the key, because you can trivially 
>> get the value from the key, but not vice versa.  Of course, the resulting 
>> syntax for that is frequently fugly.
>> 
>> $val = $array[array_find($db, $array)] ?? some-default;
>
>
> In 95% (roughly) of cases, I (personally) need the array value and not 
> the key. Just having the option to get the key is already a step forward 
> compared to the current state, but I personally would find it 
> impractical (and fugly, as you said) to use the method, especially if 
> the search callback is more complex and multi-line (and it is fugly, as 
> you said).
>
> Here is an example for this, without using a helper variable:
>
> $value = $array[\array_find($array, function ($value, $key): bool {
>      if ($key % 5) {
>          return \strlen($value) < 100;
>      }
>
>      if ($key % 2) {
>          return \strlen($value) < 40;
>      }
>
>      return false;
> })];
>
> So I think, this is not an option.
>
> Cheers
>
> Josh

I think at this point I'm on team "let's just make it 2 separate functions, 
give them good names, and move on with life."

There's another issue, though: Will the callback always be given both $value 
and $key?  If so, it's incompatible with internal single-parameter functions.  
If not, and it tries to auto-detect, we run into issues with functions with 
optional second arguments.  (This is a pre-existing mess I've run into before.)

--Larry Garfield

Reply via email to