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

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

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

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

userTable
uidusername
1name1
2name2
4name4
9name9






查出对应的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;
	}
}



转载于:https://www.cnblogs.com/rflyee/archive/2012/11/18/3099737.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值