2022年6月29日(水) 17:40 Guilliam Xavier <guilliam.xav...@gmail.com>:

> >> > https://wiki.php.net/rfc/random_extension_improvement
> >>
> >> I just realized a little thing: in the array_rand() example, for
> >> $beforeSingle, it would probably be "more realistic" to omit `, 1`
> >> (which is already the default for $num).
> >>
> >> Note: for `Randomizer::pickArrayKeys(array $array, int $num): array`,
> >> it makes sense that $num does *not* have a default value (1 would be
> >> "weird" because the method always returns a *list of keys*, and
> >> count($array) [via null] would be "useless" because keys are returned
> >> *in their original order* [so it would make the method equivalent to
> >> array_keys($array) by default]),
> >> and that's probably a good thing (it forces to update the call by
> >> adding an explicit `, 1` argument and reminds to add a `[0]` or
> >> similar on the returned value).
> >>
> >> An alternative design would be `Randomizer::pickArrayKey(array
> >> $array): int|string`, but migrating existing uses with $num != 1 would
> >> be harder, so probably not better.
> >
> > This is certainly a complicated issue.
> >
> > I proposed the signature `Randomizer::arrayPickKeys(array $array, int
> $num): array` because it can be solved with the current PHP sugar syntax
> and the default value of $num is 1 despite the name "arrayPickKeys".
> >
> > However, this is a bit tricky and may not be user-friendly for the
> average user.
> >
> > So, how about adding two methods, `Randomizer::arrayPickKey(array
> $array): int|string` and `Randomizer::arrayPickKeys(array $array, int
> $num): array`?
> >
> > This may seem redundant, but it may avoid user confusion.
>
> Sorry if I wasn't clear: I just suggested to make this little change
> in the example:
>
> ```diff
> -$beforeSingle = array_rand(['foo' => 'foo', 'bar' => 'bar', 'baz' =>
> 'baz'], 1); // (string) foo
> +$beforeSingle = array_rand(['foo' => 'foo', 'bar' => 'bar', 'baz' =>
> 'baz']); // (string) foo
> ```
>
> to make it more "realistic".
>
> As concerns the rest (about pickArrayKeys): sorry for the digression,
> I was just "thinking out loud", I *don't* want any change there
> (first, it makes sense that pickArrayKeys has `int $num` *without* a
> default value [even if array_rand has 1]; second, "pickArrayKey" [if
> really wanted] is trivial to implement in userland as a wrapper around
> pickArrayKeys [but the opposite would not be so], and I don't think
> that adding *both* methods to Randomizer is desirable either [better
> keep it simple/minimal]).
>
> Regards,
>
> --
> Guilliam Xavier
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>
Hi

Thank you. That feels true.
I will try to keep the RFC as it currently stands.

Sorry for the delay in replying. I was a little held up with personal
business.
I will delay the start of voting by one day.

Best regards
Go Kudo

Reply via email to