基于离线或在线的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);