On 20 September 2014 20:47, Sara Golemon <[email protected]> wrote:
>
> I like the general idea, but rather than explicitly focusing on the 'or'
> keyword, how about just giving all loop constructs (do/while/for/foreach) a
> return value? I'd suggest an integer return value indicating the number of
> times the loop executed.
>
> This accomodates your use case since foreach(...) {} or { defaultblock }
> still works, while also allowing for others:
>
> e.g.:
> $ranTwice = foreach(...) {} == 2;
>
> It does introduce a temp var, but OpCache+ can trivially optimize that out
> when it isn't used.
>
> -Sara
Sorry @Sara - didn't reply to all the first time.
----
mind === blown
This would open up a huge amount of other functionality I'd never
dreamed of (some of which is quite scary!)
for($i = for(...) {}; $i < ...) {}
I'm really not sure I understand the full implication of this though.
This would mean changing loop constructs from statements to
expressions. I wonder how difficult that will actually be, and what
other problems it would cause (I obviously haven't played with this
idea yet).
It would also mean having to make { default block } into an
expression... with a return value (to be allowed on either side of the
boolean or)
Lots to think about here, if it's at all viable this will need it's
own separate RFC, it's a much more invasive change, but definitely a
great idea.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php