2014-04-04 87 views
2

數組我有一個數組,看起來是這樣的:如何排序布爾值

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

有一個簡單的辦法把所有的陣列,其中foo == true頂端?

+0

http://www.php.net/manual/en/function.uasort.php可能是您正在尋找的機器人 – RobP

回答

5

只需使用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'); 
+0

似乎通過更改'<' to '>' –

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

希望這會有所幫助!