Edit report at https://bugs.php.net/bug.php?id=61529&edit=1

 ID:                 61529
 Comment by:         jelle dot zijlstra at gmail dot com
 Reported by:        asserte at gmail dot com
 Summary:            Make unset() an expression
 Status:             Feedback
 Type:               Feature/Change Request
 Package:            Scripting Engine problem
 Operating System:   Linux
 PHP Version:        5.4.1RC/5.5.0-dev
 Block user comment: N
 Private report:     N

 New Comment:

I just hit this bug trying to unset a variable in a for loop, like this:
<?php
for( ; ; unset($i)) {
    if($someCondition) {
        $i = 42;
    }
    if(isset($i)) {
        doSomething();
    } else {
        doSomethingElse();
    }
}

I understand why this currently fails and obviously there are workarounds, but 
intuitively unset should work in the third expression of a for loop.


Previous Comments:
------------------------------------------------------------------------
[2012-03-30 12:12:59] dmi...@php.net

I didn't test the patch just made a quick review. I suppose it's incomplete. 
With patch it's possible to write $a = unset($b), but UNSET opcode doesn't care 
about return value, so what's going to be assigned to $a?

In any case, I think, such changes are not allowed in minor releases. So must 
not be committed into 5.4. Personally, I don't think it makes sense for trunk 
as well. It always possible to write

if (isset($entity['id'])) unset($entity['id']);

More clear, and just a few characters more :)

------------------------------------------------------------------------
[2012-03-29 15:34:49] larue...@php.net

@nikic @reeze, after a deep thought,  I realize that I was wrong. yes, to fix 
this 
we should make unset return something.. 

so, mark it as a req , 
thanks

------------------------------------------------------------------------
[2012-03-29 14:59:36] larue...@php.net

@nikic thinking of isset, include. :)

------------------------------------------------------------------------
[2012-03-29 14:59:27] larue...@php.net

@nikic thinking of isset, include. :)

------------------------------------------------------------------------
[2012-03-29 13:28:04] ni...@php.net

unset() is a statement, not an expression. So you obviously can't use it in an 
expression context. Changing buy type to Feature Request.

In my eyes the behavior *should not* be changed. unset() does not have a 
meaningful return value and as such should not be allowed in an expression 
context.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=61529


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61529&edit=1

Reply via email to