2010-12-16 2 views
0

나는 다차원 배열을 가지고 다음과 같은 : 나는 그래서 온라인 사용자가 먼저 표시되는 배열을 정렬 할이에서PHP는 일종의 오프라인을 기반으로 또는 온라인

[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하지 않음을 원하는 가능한 경우 배열 또는 해당 키를 수정하십시오.

누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

감사합니다.

답변

0
$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); 
1
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; 
    }