Re: deleting $_SESSION

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Marek Kilimajer wrote:
Jochem Maas wrote:

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??


No, use isset() or empty() to check if the variable exists and you won't get notices


right, I'm thinking about it too much - getting confused for no reason :-). but that still leaves the point that you can't tell the difference between a null var and one that is not set at all - this seems odd if there is actually a difference (okay so you can tell the difference but it seems to require that you generate an E_NOTICE which is not the idea really is it).

as I said I use empty(), isset() and null with out actually thinking about it...
they just do what I mean :-) which is great credit to the guys that wrote php
and hid all the intricacies of types/nulls etc from your average phper like me!

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux