首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 多維陣列指定欄位排序函式(精簡版)

     編輯:PHP 綜合知識

快速解決方案

針對「依特定欄位對多維陣列排序」的高頻需求,提供一個極精簡、可直接複製使用的函式:

<?php
/**
 * 依指定欄位排序多維陣列
 * @param array &$array 目標陣列(參考傳遞)
 * @param string $field 排序欄位名
 * @param bool $desc 是否降序(預設 false 升序)
 */
function sortArrByField(&$array, $field, $desc = false) {
    $fieldArr = array_column($array, $field); // PHP 5.5+ 更簡潔
    array_multisort($fieldArr, $desc ? SORT_DESC : SORT_ASC, $array);
}
?>

使用範例

<?php
$data = [
    ['id' => 3, 'name' => '商品C', 'price' => 150],
    ['id' => 1, 'name' => '商品A', 'price' => 99],
    ['id' => 2, 'name' => '商品B', 'price' => 200],
];

// 價格升序
sortArrByField($data, 'price');
print_r($data);

/*
Array
(
    [0] => Array ( [id] => 1 [name] => 商品A [price] => 99 )
    [1] => Array ( [id] => 3 [name] => 商品C [price] => 150 )
    [2] => Array ( [id] => 2 [name] => 商品B [price] => 200 )
)
*/

// 價格降序
sortArrByField($data, 'price', true);
print_r($data);
?>

技術細節

  • array_column() (PHP 5.5+):單行提取欄位值陣列,取代手動 foreach
  • array_multisort():第一個陣列為排序依據,後續陣列跟隨重排
  • 參考傳遞 &$array:直接修改原陣列,無需回傳值

適用版本說明

  • PHP 5.5+: 可直接使用 array_column()
  • PHP 5.3-5.4: 改用 foreach ($array as $k => $v) $fieldArr[$k] = $v[$field];

這個函式已在多個專案驗證穩定,適合快速整合到工具類或 Helper 檔案中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved