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