1

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

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

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

我试过使用array_multisort(),但这个功能对我没有帮助。

4

3 回答 3

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);


    ?>
于 2013-06-27T23:13:14.290 回答
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);

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

参考

于 2013-06-27T23:02:47.057 回答
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);
于 2013-06-27T23:05:46.227 回答