Why bloat the core library of functions when you can perform: $randomValue
= $array[array_rand($array)]; Am I missing the point?

I don't think there is a real need for this personally it's just language
bloat.  Look at Java (I know it's very different) but it provides a huge
amount of "built in" functions and is not any better off for it.

Sam

On Mon, Jul 23, 2012 at 5:12 PM, Yahav Gindi Bar <g.b.ya...@gmail.com>wrote:

>
> On 23 ביול 2012, at 19:05, Anthony Ferrara wrote:
>
> > Andrew,
> >
> > On Mon, Jul 23, 2012 at 9:26 AM, Andrew Faulds <a...@ajf.me> wrote:
> >
> >>
> >> (resending because of broken formatting)
> >>
> >> Hi there,
> >>
> >> I apologise for my previous email. It was a disorganised mess that
> didn't
> >> really
> >> make the case for that function very well. So here's a proper proposal
> >> (perhaps
> >> too proper?).
> >>
> >> Introduction ------------
> >>
> >> I am proposing a function, named array_pick(), which takes a single
> (array)
> >> argument, and returns a random value from it.
> >>
> >> Implementation --------------
> >>
> >> https://github.com/php/php-src/pull/142
> >>
> >> Specification -------------
> >>
> >> mixed array_pick(array $array);
> >> The function returns the value of one random array element from $array.
> >> Should
> >> said array be empty, then it should return NULL.
> >>
> >> Rationale ---------
> >>
> >> - array_rand exists, however it only gets a random key, not a random
> >> value. This
> >> is the logical counterpart for API completeness
> >> - array_pick is more convenient than $a[array_rand($a)], especially for
> >> these
> >> cases:
> >>  - short array syntax + array_pick, e.g.
> some_func(array_pick(['foo.png',
> >> 'bar.jpg', 'foobar.gif'])) vs $a = ['foo.png, 'bar.jpg', 'foobar.gif'];
> >> some_func($a[array_rand($a)]);
> >>  - where using long names or nested arrays, e.g.
> >> some_func(array_pick($foo['bar']['foobar']));
> >> - array_pick is less wasteful than shuffling an array and taking the
> first
> >> element
> >> - $a[array_rand($a)] issuse a NOTICE from an undefined index if the
> array
> >> is
> >> empty, but array_pick() just returns null, which is more convenient
> >> - I need this function myself quite often. It exists in two other
> >> languages I
> >> use that I can think of off the top of my head (Python, Game Maker
> >> Language)
> >>
> >> Objections ----------
> >> - PHP has too many functions
> >>  - Yes, but that doesn't mean we can't add more. Otherwise we can't
> >> improve
> >> things and move forward.
> >>
> >
> > Broken Window Theory. http://en.wikipedia.org/wiki/Broken_windows_theory
> >
> > Saying things are already broken is never a valid justification for
> > breaking things further.
> >
> >
> >> - This can be easily implemented in userland code/this is too frivolous
> to
> >> warrant addition
> >>  - This is true, however similarly to a lot of standard library
> >> functionality,
> >> it is used frequently enough that it is silly to have to rewrite it
> every
> >> time
> >> it is needed
> >>
> >
> > It's a one-liner. It's not like it's non-trivial, or there are weird
> > edge-cases, or security implications. It's a one line implementation:
> >
> > function array_pick(array $array) {
> >    return empty($array) ? null : $array[array_rand($array)];
> > }
> >
> >
> >>  - It is also the logical counterpart to array_rand(). One for a key,
> one
> >> for a
> >> value.
> >>
> >
> > Again, since it's so trivial to implement, why is it needed? Symmetry is
> a
> > decent goal, but justified symmetry. Not just symmetry for the sake of
> it...
> >
> >
> >> - The name isn't logical
> >>  - Whilst you could argue that array_rand_key is a better name, I have
> >> chosen
> >> array_pick because it is shorter, and has a similar name to similar
> >> functions in
> >> Python (random.choice) and GML (choose)
> >>
> >
> > Actually, I think that array_pick() is a poor name. Python's name makes
> > sense, because it's bound to the random namespace. But being bound to the
> > array namespace indicates a different thing. I would argue that
> > array_random_value() would be a better choice (or any one of a number of
> > names)...
> >
> >
> >> ---
> >> Thoughts?
> >>
> >
> > Shared.
> >
> > Thanks,
> >
> > Anthony
>
> > It's a one-liner. It's not like it's non-trivial, or there are weird
> > edge-cases, or security implications. It's a one line implementation:
> >
> > function array_pick(array $array) {
> >    return empty($array) ? null : $array[array_rand($array)];
> > }
>
> array_rand() is also trivial and one length long function, but it exists
> in the language and it is really useful.
> I don't think that one should think about "how much line it takes to write
> it", you should think about "does many people use this function quite often
> in order to make it part of the language".
> Personally, I think that this function is great, and when I read for the
> first time about array_rand() I thought it'll returns a value, after I
> realized it returns a key, I looked for a value pair and surprised to see
> that there's no value pair.
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to