如果你經常寫 PHP,要說你沒用過數組,那簡直是不可能的。PHP 一個數組可以走遍大街小巷,行遍萬水千山。數組相關的函數也馬虎不得,如影隨形。
今天說說一個稍顯棘手的問題,多維數組的排序。

學習時間
比如下面的數組,

如果想要根據 order 的值進行排序(升序,降序),怎麼做呢?
你需要使用 usort 函數,且需要聲明一個回調函數:
function sortByOrder($a, $b) {
return $a['order'] - $b['order'];
}
usort($myArray, 'sortByOrder');
這在 PHP 5.2 以及早期的版本內如此使用,之後的 PHP 版本,可以直接使用匿名函數,簡寫如下:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
隨着 PHP 版本的迭代,越來越多的新特性添加進去,特別是 PHP 7 以後的太空艙操作符,給這樣的回調函數提供了更靈活簡便的用法:
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
由特殊到一般
上面的函數處理都是針對特定的數組進行的,現在我們把情形推向一般,寫一個可以通用的處理函數,可以用於對多位數組的排序處理:

特別地,如果你需要保留排序前後的鍵值索引關係,那麼就要使用 uasort 函數了。用法與 usort 同。
寫在最後
因為處理的數組結構不可確定,在實際使用中,回調函數內開發者可靈活操作,已達到排序的目的。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284423.html