繁体   English   中英

用两个条件查询PHP

[英]Query with two conditions PHP

我正在尝试从数据库记录列表中创建一个数组。 制作数组并不难,但是我需要按特定顺序对数据库中的记录进行排序。

我的数组(按点排序):

$all_info[$team_id] = array(
     'nickname'     => $nickname,
     'points'       => $points_pr_round,
     'time_left'    => $time_left,
     'total_number' => $points_pr_round + $time_left,
);

更明显的示例:

$all_info[3] = array(
      'nickname'     => John,
      'points'       => 60,
      'time_left'    => 132,
      'total_number' => 60 + 132,
 );
$all_info[5] = array(
      'nickname'     => Victor,
      'points'       => 78,
      'time_left'    => 120,
      'total_number' => 78 + 120,
);
$all_info[2] = array(
      'nickname'     => Peter,
      'points'       => 78,
      'time_left'    => 125,
      'total_number' => 78 + 125,
);

在这种情况下,当我按points对数组进行排序时,Peter将排在第一位,而Victor的响应率更高。

我的问题:

我该如何对记录进行排序,首先要达到的points ,如果用户的分数相同,则需要按响应时间( time_left )对记录进行排序?

最快的解决方案是在数据库级别对数组进行排序,即按照Raymond Nijland告诉您的那样添加ORDER BY points ASC, time_left ASC

如果无法做到这一点,则可以在此处找到一个对不同键上的数组进行排序的函数示例:

/**
* function array_reorder_keys
* reorder the keys of an array in order of specified keynames; all other nodes not in $keynames will come after last $keyname, in normal array order
* @param array &$array - the array to reorder
* @param mixed $keynames - a csv or array of keynames, in the order that keys should be reordered
*/
function array_reorder_keys(&$array, $keynames){
    if(empty($array) || !is_array($array) || empty($keynames)) return;
    if(!is_array($keynames)) $keynames = explode(',',$keynames);
    if(!empty($keynames)) $keynames = array_reverse($keynames);
    foreach($keynames as $n){
        if(array_key_exists($n, $array)){
            $newarray = array($n=>$array[$n]); //copy the node before unsetting
            unset($array[$n]); //remove the node
            $array = $newarray + array_filter($array); //combine copy with filtered array
        }
    }
}

在您的情况下,您可以通过以下方式调用该函数:

array_reorder_keys($all_info, 'points,time_left');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM