php二维数组排序

Lohoris

有时候我们需要对二维数组按某一个键对应的值去排序,如下面的数组

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)

 

这是一个二维的数组,根据order键位的值顺序,当前的数组的排列可能不是我们想要的,我们可以用以下的方法对这个数组排序:

 

function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

aasort($your_array,"order");

 

最后给出完整的测试代码:

 

<?php
function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
       // $ret[$ii]=$array[$ii]; //保持索引
        $ret[]=$array[$ii]; //重置索引
    }
    $array=$ret;
}

 $myarr= array(
    0 => array (
            'hashtag' =>'a7e87329b5eab8578f4f1098a152d6f4',
            'title' => 'Flower',
            'order' => 3,
        ),

    1 => array
        (
            'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
            'title' => 'Free',
            'order' => 2,
        ),

    2 => array
        (
            'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
            'title' => 'Ready',
            'order' => 1,
        )
);

 print_r($myarr);
   
  aasort($myarr,"order");
  echo "<br /><br /><br />";
  
  print_r($myarr);

 

京ICP备14008139号-1