How to sort an array by boolean values

走远了吗. 提交于 2021-02-09 07:54:06

问题


I have an array that looks something like this:

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

Is there a simple way to bring all the arrays where foo == true to the top?


回答1:


Just use the uasort() function to order your array:

$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');



回答2:


rsort() will actually do that for you:

<?php

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

rsort($a);

var_dump($a);

Yields:

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

Example: https://eval.in/131577

Hope this helps!



来源:https://stackoverflow.com/questions/22852206/how-to-sort-an-array-by-boolean-values

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!