基于离线或在线的PHP排序

基于离线或在线的PHP排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有一个多维数组,如下所示: [Jack] => Array ( [GCF] => Array ( [Name] => Jack [retrieved] => cache ) [PF] => Array ( [lastSeen] => Fri, 03 De

我有一个多维数组,如下所示:

[Jack] => Array
    (
        [GCF] => Array
            (
                [Name] => Jack
                [retrieved] => cache
            )
        [PF] => Array
            (
                [lastSeen] => Fri, 03 Dec 2010 23:48:14 GMT
                [online] => 0
            )
     )
... More users here in the same format
由此,我想对数组进行排序,以便首先显示在线用户,但如果可能的话,我希望PHP不要修改数组或其任何键

有人对如何做到这一点有什么想法吗

谢谢。

$users=
 function array_sort($array, $on, $order='SORT_DESC') 
    { 
      $new_array = array(); 
      $sortable_array = array(); 

      if (count($array) > 0) { 
          foreach ($array as $k => $v) { 
              if (is_array($v)) { 
                  foreach ($v as $k2 => $v2) { 
                      if ($k2 == $on) { 
                          $sortable_array[$k] = $v2; 
                      } 
                  } 
              } else { 
                  $sortable_array[$k] = $v; 
              } 
          } 

          switch($order) 
          { 
              case 'SORT_ASC':    
                  echo "ASC"; 
                  asort($sortable_array); 
              break; 
              case 'SORT_DESC': 
                  echo "DESC"; 
                  arsort($sortable_array); 
              break; 
          } 

          foreach($sortable_array as $k => $v) { 
              $new_array[] = $array[$k]; 
          } 
      } 
      return $new_array; 
    } 
$online=$offline=array(); foreach($name=>$data的用户){ 如果($data['PF']['online'])){ $online[$name]=$data; }否则{ $offline[$name]=$data; } } $sorted=array\u merge($online,$offline);
$users = <input array>

$online = $offline = array();
foreach ($users as $name => $data) {
  if ($data['PF']['online']) {
    $online[$name] = $data;
  } else {
    $offline[$name] = $data;
  }
}

$sorted = array_merge($online, $offline);