RE: [PHP] negative infinity is unreachable

From: Date: Wed, 05 Sep 2001 20:38:33 +0000
Subject: RE: [PHP] negative infinity is unreachable
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-66107@lists.php.net to get a copy of this message
I believe your problem is due to ambiguous type casting. Your if statement tests a DOUBLE against a STRING. Try: $x_distance=20+($year-($current_year-9))*20; $high_distance=420-round(log($high[$year])*75,0); $low_distance=420-round(log($low[$year])*75,0); settype($high_distance, "string"); settype($low_distance, "string"); Or add this line to your code to see what I'm talking about: echo "High distance ".gettype ($high_distance)." $high_distance<BR>"; echo "Low distance ".gettype ($low_distance)." $low_distance<BR>"; Will show that $high_distance and $low_distance are of type DOUBLE. I'm not sure how this will affect your calculation, but the if condition will at least evaluate to TRUE when $high_distance or $low_distance == "INF", you can try to remove the quotation marks, it didn't work for me though. The only way I could get it to work was by changing the type. Maybe your could change your if condition: if(gettype($variable_name)=="DOUBLE"){ . . . Hope this helps! Robert Zwink http://www.zwink.net/daid.php -----Original Message----- From: Hugh Danaher [mailto:hdanaher@earthlink.net] Sent: Wednesday, September 05, 2001 3:46 PM To: Php-General Subject: [PHP] negative infinity is unreachable HELP! I have been trying variations of the code posted below with little success. The log() function generates a -INF statement when trying to calculate the log of zero or the log of an empty value in the associative array. With the "IF then unset() " statements in place, the total contents of log_high[] and log_low[] arrays become empty. Without the "IF then unset()" statements the arrays are full but the program times out because it can't use INF in imageline(). I've gone through various rewrites on this code block but have come up with nothing that works, and I need professional help (but that's a different story). Thanks, hugh Failing code: for ($year=($current_year-5);$year<=($current_year+1);$year++) { $x_distance=20+($year-($current_year-9))*20; $high_distance=420-round(log($high[$year])*75,0); $low_distance=420-round(log($low[$year])*75,0); if ($high_distance=="INF") / / INF is a double { unset($high_distance); } if ($low_distance=="INF") { unset($high_distance); } if (isset($high_distance) and isset($low_distance)) { imagettftext($image,5,0,($x_distance),($high_distance),$black,$font2,"n"); imagettftext($image,5,0,($x_distance),($low_distance),$black,$font2,"n"); imageline($image,$x_distance),$high_distance,($x_distance),$low_distance,$re d); } $log_high[$year]=$high_distance; $log_low[$year]=$low_distance; }

« previous php.general (#66107) next »