...

View Full Version : why i cant compare the integer??



tanhaha_how
02-06-2007, 01:44 PM
hi everyone, i hav a problem here.....



<?php
$answer = datediff("1984-05-02","now","y");
if($answer > 5){
echo "half year";
}else{
echo "not yet";
}
?>


datediff() actually is a function that will print the age. so the age is 23. but for if else statement, 23 > 5 will print "not yet"...it should print "half year" rite??? but,when i change to if($answer = 23), it will print "half year"....

can u all pls help me??

meth
02-06-2007, 01:46 PM
Try posting the datediff function as well.

mlseim
02-06-2007, 01:57 PM
if($answer = 23) is always true ...

if($answer == 23) may or may not be true.

martialtiger
02-06-2007, 04:33 PM
echo out $answer and see what you're getting.

CFMaBiSmAd
02-06-2007, 05:07 PM
datediff() actually is a function that will print the ageIf it prints the age to the browser, it probably returns nothing and $answer will be a NULL. The comparison will be if(NULL > 5).

tanhaha_how
02-07-2007, 07:15 AM
the code of datediff() as follow:



function datediff($start_date,$end_date="now",$unit="D")
{
$unit = strtoupper($unit);
$start=strtotime($start_date);
if ($start === -1) {
print("invalid start date");
}

$end=strtotime($end_date);
if ($end === -1) {
print("invalid end date");
}

if ($start > $end) {
$temp = $start;
$start = $end;
$end = $temp;
}

$diff = $end-$start;

$day1 = date("j", $start);
$mon1 = date("n", $start);
$year1 = date("Y", $start);
$day2 = date("j", $end);
$mon2 = date("n", $end);
$year2 = date("Y", $end);

switch($unit) {
case "D":
print(intval($diff/(24*60*60)));
break;
case "M":
if($day1>$day2) {
$mdiff = (($year2-$year1)*12)+($mon2-$mon1-1);
} else {
$mdiff = (($year2-$year1)*12)+($mon2-$mon1);
}
print($mdiff);
break;
case "Y":
if(($mon1>$mon2) || (($mon1==$mon2) && ($day1>$day2))){
$ydiff = $year2-$year1-1;
} else {
$ydiff = $year2-$year1;
}
print($ydiff);
break;
case "YM":
if($day1>$day2) {
if($mon1>=$mon2) {
$ymdiff = 12+($mon2-$mon1-1);
} else {
$ymdiff = $mon2-$mon1-1;
}
} else {
if($mon1>$mon2) {
$ymdiff = 12+($mon2-$mon1);
} else {
$ymdiff = $mon2-$mon1;
}
}
print($ymdiff);
break;
case "YD":
if(($mon1>$mon2) || (($mon1==$mon2) &&($day1>$day2))) {
$yddiff = intval(($end - mktime(0, 0, 0, $mon1, $day1, $year2-1))/(24*60*60));
} else {
$yddiff = intval(($end - mktime(0, 0, 0, $mon1, $day1, $year2))/(24*60*60));
}
print($yddiff);
break;
case "MD":
if($day1>$day2) {
$mddiff = intval(($end - mktime(0, 0, 0, $mon2-1, $day1, $year2))/(24*60*60));
} else {
$mddiff = intval(($end - mktime(0, 0, 0, $mon2, $day1, $year2))/(24*60*60));
}
print($mddiff);
break;
default:
print("{Datedif Error: Unrecognized \$unit parameter. Valid values are 'Y', 'M', 'D', 'YM'. Default is 'D'.}");

}

}



is it i need to return something here???sorry,i'm a newbie in php.
can u all pls help me????

GJay
02-07-2007, 08:06 AM
yeah, rather than printing the age, you need to return it
e.g.


case "D":
return intval($diff/(24*60*60));

(you don't need to break, as returning will end the function)

tanhaha_how
02-07-2007, 04:03 PM
i have tried the "return" method that you mentioned above.....but the problem still remain the same.....any other way??????
one more thing,i have also echo the $answer, but can display anything...is it means nth was pass to this page?????

help me pls...



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum