Posted by Jochem Maas on 04/11/05 23:18
John Nichel wrote:
> Jochem Maas wrote:
>
>> AndreaD wrote:
>>
>>> I have a session variable called
>>>
>>> $_SESSION['total'] the problem is I can't delete/reset it. I have tried
>>>
>>> $_SESSION['total']= 0;
>>>
>>> $_SESSION['total']= "";
>>
>>
>>
>> I guess you didn't know/think of trying null:
>>
>> $_SESSION['total'] = null;
>>
>> ...which has the same effect as using:
>>
>> unset($_SESSION['total']); // as you have been told on at least 3 diff
>> occasions ;-)
>
>
> Not true. If you set it to null, it still exists...it's just null. If
> you unset it, the variable no longer exists.
fair enough, but then how do you differentiate between a var that exists and is null
and a non-existant var?
Marek pointed out that setting error reporting to E_ALL, shows a notice
when you var_dump() the unset() var and not the null var, but other than that
the unset() var and the null var give the same result from isset() and empty()
e.g:
error_reporting(E_ALL);
$X = array("total" => 1);
$X["total"] = null;
if ( isset ( $X["total"] ) ) {
echo ( "Yes" );
} else {
echo ( "No" );
}
var_dump( $X["total"] );
unset ( $X["total"] );
if ( isset ( $X["total"] ) ) {
echo ( "Yes" );
} else {
echo ( "No" );
}
var_dump( $X["total"] );
which produces the following for me:
NoNULL
NoPHP Notice: Undefined index: total in Command line code on line 23
NULL
so that means you would have to set a suitable error handler for E_NOTICE just before
the place you want to check if the var exists and unset it immediately afterwards??
funny how in everyday [php]life this is never a problem :-)
>
> $_SESSION['total'] = null;
> if ( isset ( $_SESSION['total'] ) ) {
> echo ( "Yes" );
> } else {
> echo ( "No" );
> }
>
> unset ( $_SESSION['total'] );
> if ( isset ( $_SESSION['total'] ) ) {
> echo ( "Yes" );
> } else {
> echo ( "No" );
> }
>
[Back to original message]
|