I am trying to create an application which find near by restaurants, I have used a database to retrieve near by zipcodes
so I now have an array like
$sortLike=array(60007,60001,60003,60002);
and database return array like
$array1= array( array ('ID' => 138,'zip_code' => 60007,'approved' => 1),
array('ID' => 103,'zip_code' => 60007,'approved' => 0),
array('ID' => 124,'zip_code' => 60002,'approved' => 0),
array('ID' => 104,'zip_code' => 60002,'approved' => 1),
array('ID' => 105,'zip_code' => 60003,'approved' => 0),
array('ID' => 106,'zip_code' => 60001,'approved' => 0),
array('ID' => 114,'zip_code' => 60007,'approved' => 0)
);
So I need to show all restaurants that are approved but in order of $sortLike array i.e returned array should be
$array1= array(
array ('ID' => 138,'zip_code' => 60007,'approved' => 1),
array('ID' => 103,'zip_code' => 60007,'approved' => 0),
array('ID' => 114,'zip_code' => 60007,'approved' => 0)
array('ID' => 106,'zip_code' => 60001,'approved' => 0),
array('ID' => 105,'zip_code' => 60003,'approved' => 0),
array('ID' => 104,'zip_code' => 60002,'approved' => 1),
array('ID' => 124,'zip_code' => 60002,'approved' => 0),
);
Here is what I tried
function sortarray1($mylist,$mainZipSearch){
$newList=$newList2=$newList3 = array();
$j=$k=$l=0;
if(count($mylist))
{
foreach($mylist as $k=>$v) {
if( $v['approved']==1 && $v['zip_code']==$mainZipSearch){
$newList[$j] = $mylist[$k];
}
else if( $v['approved']==0 && $v['zip_code']==$mainZipSearch){
$newList2[$k] = $mylist[$k];
}
else{
$newList3[$l] = $mylist[$k];
}
$j++;$k++;$l++;
}
$newList=array_values($newList);
$newList2=array_values($newList2);
$newList3=array_values($newList3);
$arr=array_merge($newList,$newList2,$newList3 );
}
return
}