PHP:根据属性对多维数组进行排序



我得到了如下所示的多维数组。我想基于[date]属性对第二级数组进行排序。我相信我可以使用array_multisort,但我不确定如何进行。

我的数组在变量$presentations

Array
(
    [0] => Array
        (
            [date] => 20111104
            [name] => Name of Presentation
        )
    [1] => Array
        (
            [date] => 20111118
            [name] => sadf
        )
    [2] => Array
        (
            [date] => 20100427
            [name] => older one
        )
    [3] => Array
        (
            [date] => 20101213
            [name] => Another one from 2010
        )
    [4] => Array
        (
            [date] => 20110719
            [name] => sdf
        )
    [5] => Array
        (
            [date] => 20110614
            [name] => Sixth one
        )
)

根据具体情况,usort回调应该返回3种类型的值:

  • 参数$a小于$b时为负数
  • 参数$b小于$a时为正数
  • 如果$a$b都等于,则为零
usort($presentations, function($a, $b)
{
    if($a['date'] == $b['date'])
    {
        return 0;
    }
    return $a['date'] < $b['date'] ? -1 : 1;
});

您可以使用usort()应用自定义比较函数。

usort($presentations, 
      function ($left, $right) {
          return $left['date'] - $right['date'];
      });

由于类型杂耍,这里是PHP中与整数一起工作的字符串实现:

usort($presentations, function($a, $b) {
    return strcmp($a['date'], $b['date']);
});

相关内容

  • 没有找到相关文章

最新更新