php按数组中的值的顺序查询,并按顺序返回到新的数组中

注:本文代码方法基于php框架codeigniter,其中的数据库操作等同与php直接操作(方法不当之处,请多指教!

问题:已知数组:$uidArray = array(4,9,2);

现在需要按$uidArray中uid的顺序查询另一数据表(如下),

userTable
uid username
1 name1
2 name2
4 name4
9 name9






查出对应的username,并按顺序返回,即希望得到

$nameArray = array('name4','name9','name2');

思想:只需使查询后username对应的键同$uidArray中相应uid对应的键一致,再使用php按键排序将结果排序即可(前提$uidArray键默认0,1,2...)

解决:

方法1:

public function getUsername($uidArray){
	//互换键值
	$turnArray = array_flip($uidArray);
	
	//查询出未审核id所对应的用户信息,codeigniter查询方法
	$this->db->where_in('uid',$uidArray);
	$this->db->select('username');
	$dbResult = $this->db->get('userTable');
	
	if($dbResult->num_rows() > 0){
	    foreach ($dbResult->result_array() as $row){
	        //配合前面互换键值,使$result的键值和$uidArray一致
	        $result[$turnArray[$row['id']]] = $row;
            }
            //按键排序
	    ksort($result);
	    
	    return $result;
	    
	}  else {
	    return FALSE;
	}
}


方法2:

private function getUsername($uidArray){
	//查询出未审核uid所对应的用户信息,codeigniter
	$this->db->where_in('uid',$uidArray);
	$this->db->select('username');
	$dbResult = $this->db->get('userTable');
	
	if($dbResult->num_rows() > 0){
	    foreach ($dbResult->result_array() as $row){
	        //搜索在$uidArray中 值为$row['id']的建,作为$result的键
	        $result[array_search($row['id'], $uidArray)] = $row;
	    }
	    //按键排序
	    ksort($result);
	    
	    return $result;
	    
	}  else {
	    return FALSE;
	}
}



posted @ 2012-11-18 15:59  大飞_Rflyee  阅读(411)  评论(0编辑  收藏  举报