Home > Backend Development > PHP Tutorial > PHP 对二维数组排序

PHP 对二维数组排序

WBOY
Release: 2016-06-06 20:32:18
Original
1130 people have browsed it

现在有一个二维数组

<code>$arr = array(
    array('date'=>'2011-04-21','wu'=>'test'),
    array('date'=>'2014-04-21','wu'=>'good'),
    array('date'=>'2011-12-22','wu'=>'great'),
    array('date'=>'2012-05-21','wu'=>'hahah'),
    array('date'=>'2013-08-13','wu'=>'test'),
    array('date'=>'2011-04-25','wu'=>'yes'),
    array('date'=>'2014-04-14','wu'=>'no'),
);
</code>
Copy after login
Copy after login

我想将它按照里面date日期来重新排序,得到这样的新数组:

<code>$arr2 = array(
    array('date'=>'2011-04-21','wu'=>'test'),
    array('date'=>'2011-04-25','wu'=>'yes'),
    array('date'=>'2011-12-22','wu'=>'great'),
    array('date'=>'2012-05-21','wu'=>'hahah'),
    array('date'=>'2013-08-13','wu'=>'test'),
    array('date'=>'2014-04-14','wu'=>'no'),
    array('date'=>'2014-04-21','wu'=>'good'),
);
</code>
Copy after login
Copy after login

请问应该怎样做呢?

回复内容:

现在有一个二维数组

<code>$arr = array(
    array('date'=>'2011-04-21','wu'=>'test'),
    array('date'=>'2014-04-21','wu'=>'good'),
    array('date'=>'2011-12-22','wu'=>'great'),
    array('date'=>'2012-05-21','wu'=>'hahah'),
    array('date'=>'2013-08-13','wu'=>'test'),
    array('date'=>'2011-04-25','wu'=>'yes'),
    array('date'=>'2014-04-14','wu'=>'no'),
);
</code>
Copy after login
Copy after login

我想将它按照里面date日期来重新排序,得到这样的新数组:

<code>$arr2 = array(
    array('date'=>'2011-04-21','wu'=>'test'),
    array('date'=>'2011-04-25','wu'=>'yes'),
    array('date'=>'2011-12-22','wu'=>'great'),
    array('date'=>'2012-05-21','wu'=>'hahah'),
    array('date'=>'2013-08-13','wu'=>'test'),
    array('date'=>'2014-04-14','wu'=>'no'),
    array('date'=>'2014-04-21','wu'=>'good'),
);
</code>
Copy after login
Copy after login

请问应该怎样做呢?

直接上代码

<code>$tmp = array();

foreach ($arr as $a) {
    $tmp[$a['date'] . '_' . $a['wu'] . '_' . rand(1000000, 9999999)] = $a;
}

asort($tmp);

$arr = array_values($tmp);
</code>
Copy after login

使用 array_multisort
参考:http://cn2.php.net/array_multisort

<code>php</code><code>$sort = array(  
    'direction' => 'SORT_ASC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序  
    'field'     => 'date',       //排序字段  
);
$arrSortTmp = array();  
foreach($arr AS $uniqid => $row){  
    foreach($row AS $key=>$value){  
        $arrSortTmp[$key][$uniqid] = $value;  
    }  
}
array_multisort($arrSortTmp[$sort["field"]],constant($sort["direction"]), $arr);

var_dump($arr);
</code>
Copy after login

$arr = array(
array('date'=>'2011-04-21','wu'=>'test'),
array('date'=>'2014-04-21','wu'=>'good'),
array('date'=>'2011-12-22','wu'=>'great'),
array('date'=>'2012-05-21','wu'=>'hahah'),
array('date'=>'2013-08-13','wu'=>'test'),
array('date'=>'2011-04-25','wu'=>'yes'),
array('date'=>'2014-04-14','wu'=>'no'),
);

array_multisort($arr, SORT_ASC);

print_r($arr);

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template