Re: I know this is not easy and I'm not stupid but...

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

 



Jan Reiter wrote:
Hi!

Phil:
Still I am curious what var_dump($userValues['afterDark']); at line 102.5
would return. I managed to recreate that fault with
$var['test'] = "blah";

echo ($var['test']);

if( $var['test'] == 0)
{
	echo "ok";
}

//this returns blahok -- not expected.
In my case Var_dump() returns string(4) "blah" as expected.

Using
if( $var['test'] === 0)

behaves as expected!!

Are you wanting to only test for a empty/non-empty string?

if so, use this.

if ( empty($var['test']) ) {
	echo "var['test'] is empty";
}



Jim:
TypeCasting would only be effective if you used the type sensitive
comparison operator === , because with "==" 0 equals NULL equals false
equals "" and so on ... or do I miss something here??


Hope that solves it for you! I'm still investigating why my first examples
fails. I've got the strong feeling that I'm missing something there. I don't
believe in a php bug or a memory leak in this case! Must be something pretty
obvious! Anyone a clue??

Thanks,
Jan


-----Original Message-----
From: Jim Lucas [mailto:lists@xxxxxxxxx] Sent: Thursday, August 09, 2007 8:08 PM
To: Stut
Cc: Phil Curry; php-general
Subject: Re:  I know this is not easy and I'm not stupid but...

Stut wrote:
Please include the list when replying.

Phil Curry wrote:
Phil Curry wrote:
how can this be? This is not the first time I've run into a situation like this. What am I missing?
line 102    echo  ($userValues['afterDark']);             // outputs 1
line 103    if ( $userValues['afterDark'] == 0 ) {        // passes
Add a line at 102.5...

var_dump($userValues['afterDark']);

What type is that variable?
Don't have to do a dump, I know its a tinyint(1), not null, default 0

PHP does not have a type of tinyint

knowing now that this comes from a database, if it is mysql, then it is of
type string

PHP converts all fields when pulled from the database into strings.  It does
not take into account what type the field is actually set to in mysql.

Try puting a (int) in front of the condition like this

if ( (int)$userValues['afterDark'] == 0 ) {
	...
}

Maybe this will help

That would be the type in the database, not the type of that variable at that time.

-Stut





--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare

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