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