问题
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