array_multisort 對關聯數組進行排序的問題 PHP


我們在php的數組操作中經常用到對數組進行排序的問題,這里說的是對關聯數組進行排序
需要用到函數 array_multisort 。
array_multisort(array_column($arr, 'weight'),SORT_NUMERIC, SORT_ASC, $arr);   // 對關聯數組 $arr  將鍵列'weight'轉換為數字進行升序排序
SORT_NUMERIC  // 轉換為數字排序
SORT_STRING  // 轉換為文本排序
SORT_ASC     // 升序
SORT_DESC    // 降序

示例:
原關聯數組:
$data[] = array('volume' => 'id100343', 'weight' => '4');
$data[] = array('volume' => 'id100212', 'weight' => '1');
$data[] = array('volume' => 'id104104', 'weight' => '10');
var_dump($data);

按照weight進行排序(數字方式SORT_NUMERIC):
array_multisort(array_column($data, 'weight'),SORT_NUMERIC, SORT_ASC, $data); 

輸出結果:
array(3) {
  [0]=>
 array(2) {  ["volume"]=>  string(8) "id100212"  ["weight"]=>  string(1) "1"  }  [1]=>  array(2) {  ["volume"]=>  string(8) "id100343"  ["weight"]=>  string(1) "4"  }  [2]=>  array(2) {  ["volume"]=>  string(8) "id104104"  ["weight"]=>  string(2) "10"  } }
按照weight進行排序(文本方式SORT_STRING):
array_multisort(array_column($data, 'weight'),SORT_STRING, SORT_ASC, $data); 
array(3) {
  [0]=>
 array(2) {  ["volume"]=>  string(8) "id100212"  ["weight"]=>  string(1) "1"  }  [1]=>  array(2) {  ["volume"]=>  string(8) "id104104"  ["weight"]=>  string(2) "10"  }  [2]=>  array(2) {  ["volume"]=>  string(8) "id100343"  ["weight"]=>  string(1) "4"  } }

需要注意10作為數字和文本的區別。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM