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] [email protected]
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] [email protected]
@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] [email protected]
@nikic thinking of isset, include. :)
------------------------------------------------------------------------
[2012-03-29 14:59:27] [email protected]
@nikic thinking of isset, include. :)
------------------------------------------------------------------------
[2012-03-29 13:28:04] [email protected]
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