array_multisort 对关联数组进行排序的问题 PHP

Posted mywebnumber

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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作为数字和文本的区别。

 

以上是关于array_multisort 对关联数组进行排序的问题 PHP的主要内容,如果未能解决你的问题,请参考以下文章

PHP array_multisort—对多个数组或多维数组进行排序

PHP数组排序函数array_multisort()函数详解

array_multisort以及php中的排序函数

array_multisort 使用记录

如何利用php array_multisort函数 对数据库排序

PHP数组array_multisort排序详解