php循环输出箭值对二维数组,PHP根据键值对二维数组排序

通常我们对二维数组进行排序时,使用循环的方法进行处理,这里介绍一下,不使用循环;如何对二维数组进行排序。

方法一:先循环,在使用函数处理顺序/**

* [array_sort 多维数组排序]

* @param  [type] $array [数组]

* @param  [type] $key   [键名]

* @return [type]        [description]

*/

function array_sort($array, $key) {

$result = array();

$values = array();

foreach ($array as $id => $value) {

$values[$id] = $value[$key];

}

asort($values);

foreach ($values as $key => $value) {

$result[$key] = $array[$key];

}

return $result;

}

方法二:使用系统函数对多维数组进行排序(array_multisort)/**

* [array_sort 多维数组排序]

* @param  [type] $array [数组]

* @param  [type] $key   [键名]

* @return [type]        [description]

*/

function array_sort($array, $key, $type='ASC') {

$type = strtoupper($type) == 'ASC' ? SORT_DESC : SORT_ASC;

$key_array = array_column($array, $key);

array_multisort($key_array, $type, $array);

return $array;

}

说明:定义和用法

array_multisort()函数返回一个排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。(当有多个数组时,每个数组都将根据前一个数组的顺序进行排序)注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。

1328304ffff731c69c2cfeb580edf994.gif

1328304ffff731c69c2cfeb580edf994.gif

示例一:多个数组排序$a1 = array(2, 1, 3 );

$a2 = array('c', 'a', 'b' );

array_multisort($a1, $a2);

var_dump($a1); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

var_dump($a2); // array(3) { [0]=> string(1) "a" [1]=> string(1) "c" [2]=> string(1) "b" }

1328304ffff731c69c2cfeb580edf994.gif

示例二:排序多维数组$array = array(

array(2, 1, 3 ),

array('c', 'a', 'b' )

);

array_multisort($array[0], SORT_ASC, $array[1], SORT_DESC);

var_dump($array);

1328304ffff731c69c2cfeb580edf994.gif

本例中,我们对第一个数组进行升序,对第二个数组降序,然后打印出总的数组,但是从输出结果中我们看到,第二个数组按照第一个数组变化的顺序进行了排序。

示例三:对数据库结果进行排序(二维数组排序)$array = array(

array('volume' => 67, 'edition' => 2),

array('volume' => 86, 'edition' => 1),

array('volume' => 85, 'edition' => 6),

array('volume' => 98, 'edition' => 2),

array('volume' => 86, 'edition' => 6),

array('volume' => 67, 'edition' => 7),

);

// 返回数组中指定的一列(array_column)

$volume_array = array_column($array, 'volume');

$edition_array = array_column($array, 'edition');

array_multisort($volume_array, SORT_DESC, $edition_array, SORT_ASC, $array);

var_dump($array);

原始:

1328304ffff731c69c2cfeb580edf994.gif

排序后:

1328304ffff731c69c2cfeb580edf994.gif

1328304ffff731c69c2cfeb580edf994.gif

微信扫码查看本文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值