Thursday, October 4, 2007

Generate distinct random number using recursion in php

function generateRandomNumber($howmanynumber)
{
for($i=0; $i<$howmanynumber;$i++)
{
$random = mt_rand(1,53);
if($i == 0)
{
$rnum = $random;
}
elseif($i < 6)
{
$rnum = $rnum.",".$random;
}
else
{
$rnum = $random;
}
}
$rannum_arr = explode(",",$rnum);
$countnum = count(array_unique($rannum_arr));
if($countnum == 6)
{
return $rnum;
}
else
{
return generateRandomNumber(6);
}
}
$rannum = generateRandomNumber(6);
?>

Get start date of a week by passing week_no,month,year,weekday

/**
* convert week no,Day of week and Year to Date
*
* @var int $WeekNo - week no (1-52)
* @var int $Day - day of the week (0-6) 0-Sunday, 6-Saturday
* @var int $Year - Year
*/
function week_to_date($WeekNo,$Day,$Year,$month)
{
$WeekNo--;
$week_date = date('Y-m-d',strtotime($Year."-".$month."-01 + ".$WeekNo." weeks"));
$wDay = date('w',strtotime($week_date));
if($Day < $wDay){
$day_offset = $wDay - $Day;
$date = date('Y-m-d',strtotime($week_date." + -".$day_offset." days"));
}elseif($Day > $wDay){
$day_offset = $Day - $wDay;
$date = date('Y-m-d',strtotime($week_date." + ".$day_offset." days"));
}else{
$date = $week_date;
}
return $date;
}


$Day = 1;
$Year = "2007";
$month= "01";
$week = 1;
$cpldate = week_to_date($week,$Day,$Year,$month);

$cplday = substr($cpldate,8,2);
if($cplday < 10)
{
$cplday = substr($cplday,1,1);
}


if($cplday == 1)$gsd = $cplday;
else $gsd = $cplday - 1;

if($cplday < 10)
{
echo $year."-".$month."-0".$gsd;
}
else
{
echo $year."-".$month."-".$gsd;
}