PHP 多维数组的排序问题 根据二维数组中某个项排序

PHP内置函数 array_multisort 要求每个数组大小一样
$areas是地区的二维数组,包含人数和次数,现在要按这2种数进行降序排序


代码如下:

foreach($areaArray as &$areas) {
$times = $numbers = array();
foreach($areas as $province => $v) {
$times[$province] = $v['times'];
$numbers[$province] = $v['numbers'];
}
array_multisort($times, SORT_DESC, $numbers, SORT_DESC, $areas);
}

比如有个多为数组:


代码如下:

$arr = array(
‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7),
‘b' => array(‘id' => 2,'name' => 3,'age' => 4),
‘a' => array(‘id' => 8,'name' => 10,'age' => 5),
‘c' => array(‘id' => 1,'name' => 2,'age' => 2)
);

需要对二维数组中的 age 项排序。
需要用到PHP的内置函数 array_multisort(),可以看手册。
自定义函数:


代码如下:

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){
if(is_array($multi_array)){
foreach ($multi_array as $row_array){
if(is_array($row_array)){
$key_array[] = $row_array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_array,$sort,$multi_array);
return $multi_array;
}
//处理
echo “<pre/>”;
print_r(multi_array_sort($arr,'age'));exit;
//输出
Array
(
[c] => Array
(
[id] => 1
[name] => 2
[age] => 2
)
[b] => Array
(
[id] => 2
[name] => 3
[age] => 4
)
[a] => Array
(
[id] => 8
[name] => 10
[age] => 5
)
[d] => Array
(
[id] => 5
[name] => 1
[age] => 7
)
)
written by 大宇
0

(0)

相关推荐

  • PHP简单实现二维数组赋值与遍历功能示例

    本文实例讲述了PHP简单实现二维数组赋值与遍历功能.分享给大家供大家参考,具体如下: 示例1: <?php $loptop1['lid'] = 1000; $loptop1['pic'] = 'img/1.png'; $loptop1['title'] = 'L1'; $loptop1['price'] = 5000; $loptop1['isOnSale'] = 1; $loptop1['shelfTime'] = 1234556; $loptop2['lid'] = 1001; $lopto

  • PHP遍历二维数组的代码

    一开始打算用foreach来历遍,但是发现没有成功,oo不过关,没办法oo写······ 研究后决定用for循环,演示代码如下: 复制代码 代码如下: <?php $blog=array( array( "titledata"=>"titleMM", "bodydata"=>"bodyMM" ), array( "titledata"=>"titleGG", &q

  • php二维数组排序方法(array_multisort usort)

    例如像下面的数组: 复制代码 代码如下: $users = array(    array('name' => 'tom', 'age' => 20)    , array('name' => 'anny', 'age' => 18)    , array('name' => 'jack', 'age' => 22)); 希望能按照age从小到大进行排序.笔者整理了两个方法出来,分享给大家. 1.使用array_multisort 使用这个方法,会比较麻烦些,要将age

  • PHP中使用foreach()遍历二维数组的简单实例

    第一种类型 想用foreach()遍历整个二维数组: $team = array('lk','ok'); $book = array('linux服务器配置与管理',$team); foreach($book as $k=>$val) //for $book each $value( as ) echo $k.'=>'.$val.''; 输出结果是: 0=>linux服务器配置与管理 1=>Array 当然,其实我是想要所有具体内容,而不是输出array... 所以应该采用如下做法

  • 探讨php中遍历二维数组的几种方法详解

    在PHP应用当中,二维数组的应用算是高频率的了,尤其遇到较为复杂的计算时,基本上都要用到二维或者多维数组的,而在编历多维数组使用的较多的应该是 for 循环遍历和 foreach 遍历两个函数了,其中没什么特殊要求的话,基本上都是在使用 foreach 遍历函数,当然,我们可以通过这两个遍历函数来组合成各种各样的输出方式. 还是老样子,一直在使用,从来未记住,简单的遍历输出还是较为简单的,下面是两个在PHP中遍历二维函数的代码片段,如下.. 使用for循环遍历 <?PHP //使用for循环遍历

  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些"大牛"的代码,做做分享. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'email' => 'zhangsan@sina.com', ), 1 => array( 'id' => 2, 'name' => '李四', 'email' => 'lisi@

  • PHP中遍历二维数组_以不同形式的输出操作实例

    如下所示: <body> <?php //定义二维索引数组 $arr = array( array("101","李军","男","1976-02-20","95033"), array("103","陆君","男","1974-06-03","95031"), array("10

  • php二维数组转成字符串示例

    复制代码 代码如下: function arr2str ($arr){    foreach ($arr as $v)    {        $v = join(",",$v); //可以用implode将一维数组转换为用逗号连接的字符串        $temp[] = $v;    }    $t="";    foreach($temp as $v){        $t.="'".$v."'".",&quo

  • php中遍历二维数组并以表格的形式输出的方法

    一.索引数组 <?php //使用array()语句结构将联系人列表中所有数据声明为一个二维数组,默认下标是顺序数字索引 $contact1 = array( //定义外层数组 array(1,'高某','A公司','北京市','(010)987654321','gm@Linux.com'),//子数组1 array(2,'洛某','B公司','上海市','(021)123456789','lm@apache.com'),//子数组2 array(3,'峰某','C公司','天津市','(022

  • PHP二维数组的去重问题解析

    之前写了一篇关于数组去重的文章,但是仅限于一维数组.下面的函数可以用于二维数组: 复制代码 代码如下: //二维数组去掉重复值 function array_unique_fb($array2D) { foreach ($array2D as $v) { $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一

随机推荐