Domanda

Need your professional help. I have array like this:

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

Need to sort by name, but when I use ksort() or asort(), array sorts by id.

I tried use array_multisort() but this function not help me to.

È stato utile?

Soluzione

we can use this function :

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


    ?>

Altri suggerimenti

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

define your arrays first and then sort them, will make life easier.

Reference

you can assign the name as key and then sort.

 $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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top