php中的多重排列数组

时间:2013-06-27 22:59:13

标签: php arrays array-multisort

需要你的专业帮助。我有这样的数组:

array(
    array('id'=>1, 'name'=>'b'), 
    array('id'=>2, 'name'=>'a'), 
    array('id'=>3, 'name'=>'c'));

需要按name排序,但当我使用ksort()asort()时,数组按id排序。

我尝试过使用array_multisort(),但这个功能无法帮助我。

3 个答案:

答案 0 :(得分:3)

$ar = array(
       array('id'=>1, 'name'=>'b'),
       array('id'=>2, 'name'=>'a')
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);

首先定义你的数组然后对它们进行排序,这将使生活更轻松。

Reference

答案 1 :(得分:3)

我们可以使用这个功能:

<?php
    $hold = array(
        array('id'=>1, 'name'=>'b'), 
        array('id'=>2, 'name'=>'a'), 
        array('id'=>3, 'name'=>'c'));


    //array before sorting 
    var_dump($hold);


    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($hold,"name");


    //array after sorting 
    var_dump($hold);


    ?>

答案 2 :(得分:2)

您可以将名称指定为键,然后排序。

 $array = array(array('id'=>1, 'name'=>'b'), array('id'=>2, 'name'=>'a'), array('id'=>3), 'name'=>'c')

 $newarray = array();
 foreach ($array as $key => $item) {
     $newarray[$item['name']] = $item;
 }

  ksort($newarray);