我正在嘗試正確排序我的陣列。我想根據“收件人”條目對其進行排序。雖然排序程序的每次迭代 PHP 都應該檢查它是否應該按 userName 或 locationName 對下一個專案進行排序。
它應該是一個排序程序。
空值應該附加在輸出的末尾。
// ARRAY TO SORT
$array = [
[
"id" => 1,
"recipient" => "User",
"userName" => "Max Mustermann",
"locationName" => "Test Location"
],
[
"id" => 2,
"recipient" => "Location",
"userName" => "Susi Mustermann",
"locationName" => "Another Location"
],
[
"id" => 3,
"recipient" => "Location",
"userName" => "Susi Mustermann",
"locationName" => "Wow Much Location"
],
[
"id" => 4,
"recipient" => "User",
"userName" => "Fritz Kalkbrenner",
"locationName" => "Good Music"
],
[
"id" => 5,
"recipient" => "Location",
"userName" => "Paul Kalkbrenner",
"locationName" => null
],
];
我很難為這個問題找到正確的標題。有沒有辦法在一個程序中做到這一點,或者我應該拆分陣列并一一排序?
uj5u.com熱心網友回復:
它必須根據 3 個標準進行排序:
- 按收件人
- 位置名稱!== null
- 由 userName 或 locationName 取決于收件人
為了避免大小寫區分,提前通過級聯生成正確的密鑰。
usort($array,function($a,$b){
$sort2key = strtolower($a['recipient']).'Name';
return $a['recipient'] <=> $b['recipient']
?: is_null($a['locationName']) <=> is_null($b['locationName'])
?: $a[$sort2key] <=> $b[$sort2key];
});
演示:https ://3v4l.org/L6cBn
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525848.html
標籤:php排序多维数组
