如何按布尔值对数组进行排序

时间:2014-04-04 02:02:06

标签: php arrays sorting

我有一个看起来像这样的数组:

array(
  array('foo' => true),
  array('foo' => false),
  array('foo' => true),
  array('foo' => true),
  array('foo' => false)
)

是否有一种简单的方法可以将foo == true的所有数组放到顶部?

2 个答案:

答案 0 :(得分:6)

只需使用uasort()功能订购数组:

$arr = array(
    array('foo' => true),
    array('foo' => false),
    array('foo' => true),
    array('foo' => true),
    array('foo' => false)
);

function sortit($a, $b) {
    if($a['foo'] === $b['foo']) {
        return 0;
    }

    return $a['foo'] > $b['foo'] ? -1 : 1;
}

uasort($arr, 'sortit');

答案 1 :(得分:0)

rsort()实际上会为您做到这一点:

<?php

$a = array(
  array('foo' => true),
  array('foo' => false),
  array('foo' => true),
  array('foo' => true),
  array('foo' => false)
);

rsort($a);

var_dump($a);

收率:

array (size=5)
  0 => 
    array (size=1)
      'foo' => boolean true
  1 => 
    array (size=1)
      'foo' => boolean true
  2 => 
    array (size=1)
      'foo' => boolean true
  3 => 
    array (size=1)
      'foo' => boolean false
  4 => 
    array (size=1)
      'foo' => boolean false

示例:https://eval.in/131577

希望这有帮助!