On Wed, Jul 3, 2013 at 10:01 PM, Chris London <m...@chrislondon.co> wrote:

> Hello community,
>
> This is my first post here. I hope to improve my participation in the
> community and give back to the technology that has done so much for my
> career.  My first attempt is to propose an additional syntax for the
> Foreach statement.
>
> Background:
>
> There are times in our code where we can leave things blank that we don't
> need, such as:
>
> for ( ; ; ) {
>
> }
>
> - and -
>
> list( , $foo, $bar) = array('ignore', 'myFoo', 'myBar');
>
> Proposal:
>
> I have found over the years that there are times when I want to loop
> through an associative array but I don't need the value. I would like to
> allow the following syntax:
>
> foreach ($array as $key => ) {
>
> }
>
> Please let me know your thoughts.
>
> Thanks
> Chris London
>

While it does sometimes happen that you do not need the value, it's not
particularly common and as such I don't think it's necessary to add
additional syntax for this case. It's fairly straightforward to abstract
this behavior away into a separate function used as follows:

    foreach (keys($iterable) as $key) { ... }

Where the keys function is defined as:

    function keys($iterable) {
        foreach ($iterable as $key => $_) {
            yield $key;
        }
    }

This is something you write once (with the slightly ugly $key => $_), but
can then always use to have clear code :) Of course, as already said in the
other mail, for arrays the keys() function already exists as array_keys(),
so you don't even have to write anything yourself.

Nikita

Reply via email to