PHP按一个字段对一个或多个数组进行排序,其中包含4个不同的值

PHP按一个字段对一个或多个数组进行排序,其中包含4个不同的值,php,Php,我使用以下PHP创建数组数组: )) 我希望能够按字段“profileStatus”对该数组进行排序 该字段有4个值,我想按以下顺序排序: 在线 远离 忙碌的 离线 下一个要排序的字段是heartbeat(这是MySQL日期) 我已经研究了usort()和multiarraysort(),它们似乎没有按字段的不同值排序-我可能错了 我玩了以下游戏,但运气不佳: function cmpDistance($a, $b) { return ($a['distance'] - $b['di

我使用以下PHP创建数组数组:

))

我希望能够按字段“profileStatus”对该数组进行排序

该字段有4个值,我想按以下顺序排序:

  • 在线
  • 远离
  • 忙碌的
  • 离线
下一个要排序的字段是heartbeat(这是MySQL日期)

我已经研究了usort()和multiarraysort(),它们似乎没有按字段的不同值排序-我可能错了

我玩了以下游戏,但运气不佳:

function cmpDistance($a, $b) {
    return ($a['distance'] - $b['distance']);
}
任何想法——指向正确的方向——都将不胜感激:)


thx

您可以使用usort()完美地完成此操作,因此您的方法是正确的。但是,您的usort()回调函数需要进一步增强

<?php

// Let's assign a value to each profile status
$values = array('online' => 1, 'away' => 2, 'busy' => 3, 'offline' => 4);

usort($this->initializeTodayMembersOnlineArray, function($a, $b) use ($values) {
    return $values[$a['todayInitializeProfileStatus']] - $values[$b['todayInitializeProfileStatus']];
});

?>

您组织的下一个变量是什么?基本上,如果你有两个“在线”,那么哪个先到有关系吗?Heartbeat是另一个要排序的字段——它是MySQL的DateTime值。Thanksi收到此响应-解析错误:语法错误,意外的“cmp”(T_字符串)-数组是否在此处引起问题