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