[英]How to sort a multidimensional array by a certain key?
這應該很簡單,但是要怎么做呢。 我想通過一個鍵對多維數組進行排序,如下所示:
Array (
[0] => Array
(
[iid] => 1
[invitee] => 174
[nid] => 324343
[showtime] => 2010-05-09 15:15:00
[location] => 13
[status] => 1
[created] => 2010-05-09 15:05:00
[updated] => 2010-05-09 16:24:00
)
[1] => Array
(
[iid] => 1
[invitee] => 220
[nid] => 21232
[showtime] => 2010-05-09 15:15:00
[location] => 12
[status] => 0
[created] => 2010-05-10 18:11:00
[updated] => 2010-05-10 18:11:00
))
說我想按[狀態]排序,我將如何實現呢? 提前致謝!
//define a comparison function
function cmp($a, $b) {
if ($a['status'] == $b['status']) {
return 0;
}
return ($a['status'] < $b['status']) ? -1 : 1;
}
usort($array, "cmp");
那應該做您想要的,您可以更改比較功能以對想要的任何鍵進行排序。
試試這個:使用array_multisort
$sort = array();
foreach($your_array as $k=>$v) {
$sort['status'][$k] = $v['status'];
}
array_multisort($sort['status'], SORT_DESC, $your_array);
echo "<pre>";
print_r($your_array);
usort函數是您要尋找的功能:
<?php
function cmp($a, $b) {
return $b["status"] - $a["status"];
}
$sorted = usort($your_array, "cmp");
var_dump($sorted);
?>
嘗試這個
function cmp_by_status($a, $b)
{
if ($a['status'] == $b['status']) {
return 0;
}
return ($a['status'] < $b['status') ? -1 : 1;
}
usort($data_array, "cmp_by_status");
我在按特定鍵對多維數組進行排序時,在對數組特定鍵進行排序以對數組值進行排序時,添加了此答案。
function sortBy($field, &$array, $direction = 'asc')
{
usort($array, create_function('$a, $b', '
$a = $a["' . $field . '"];
$b = $b["' . $field . '"];
if ($a == $b)
{
return 0;
}
return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1;
'));
return true;
}
通過特定的數組鍵調用此函數
sortBy('status', $array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.