Array
(
    [0] => stdClass Object
        (
            [total] => 1
            [name] => Baby
 
        )    [parent_161] => stdClass Object
        (
 
            [name] => Cab
            [total] => 3        )    [1] => stdClass Object
        (
            [total] => 3
            [name] => Tree        )
)
//如果按照name asc 排序?并保持结构不变?

解决方案 »

  1.   

    uasort() 去看看用法就知道了.
      

  2.   


    $arr = array(
    '0'=>array('total'=>1,'name'=>'Baby'),
    'parent_16'=>array('total'=>3,'name'=>'Cab'),
    '1'=>array('total'=>3,'name'=>'Tree'),
    );uasort($arr,"mysort");
    print_r($arr);function mysort($arr1=array(),$arr2=array()){

    if($arr1['name'] == $arr2['name']){
    return 0;
    }
    return ($arr1['name'] > $arr2['name'])?'1':'-1';
    }
    有时间多看看手册比较好~~呵呵·~~
      

  3.   

    function natsort2d( &$arrIn, $index = null )
    {
       
       $arrTemp = array();
       $arrOut = array();
       
       foreach ( $arrIn as $key=>$value ) {
           
           reset($value);
           $arrTemp[$key] = is_null($index)
                               ? current($value)
                               : $value[$index];
       }
       
       natsort($arrTemp);
       
       foreach ( $arrTemp as $key=>$value ) {
           $arrOut[$key] = $arrIn[$key];
       }
       
       $arrIn = $arrOut;
       
    }上面是我在手册里看到的函数 你可以试试··二维的自然排序法
      

  4.   


    <?php
    class Test
    {
        public $id;
        public $name;    public function __construct($id, $name)
        {
            $this->id = $id;
            $this->name = $name;
        }
    }$test1 = new Test(1, 'q1');
    $test2 = new Test(2, 'w2');
    $test3 = new Test(3, 'a3');$data[] = $test1;
    $data[] = $test2;
    $data[] = $test3;var_dump($data);usort($data, 'sortObj');var_dump($data);function sortObj($a, $b)
    {
        $a_name = $a->name;
        $b_name = $b->name;
        if ($a_name == $b_name)
        {
            return 0;
        }    return ($a_name < $b_name) ? -1 : 1;
    }
    ?>output:
    排序前
    array
      0 => 
        object(Test)[1]
          public 'id' => int 1
          public 'name' => string 'q1' (length=2)
      1 => 
        object(Test)[2]
          public 'id' => int 2
          public 'name' => string 'w2' (length=2)
      2 => 
        object(Test)[3]
          public 'id' => int 3
          public 'name' => string 'a3' (length=2)
    排序后
    array
      0 => 
        object(Test)[3]
          public 'id' => int 3
          public 'name' => string 'a3' (length=2)
      1 => 
        object(Test)[1]
          public 'id' => int 1
          public 'name' => string 'q1' (length=2)
      2 => 
        object(Test)[2]
          public 'id' => int 2
          public 'name' => string 'w2' (length=2)
      

  5.   

    $ar = array(
      (object)array( 'total' => 1, 'name' => 'Baby'),
      'parent_161' => (object)array( 'name' => 'Cab', 'total' =>3),
      (object)array( 'total' => 3, 'name' => 'Tree'),
    );foreach($ar as $v)
      $p[] = $v->name;array_multisort($p, SORT_ASC, $ar);print_r($ar);
    Array
    (
        [0] => stdClass Object
            (
                [total] => 1
                [name] => Baby
            )    [parent_161] => stdClass Object
            (
                [name] => Cab
                [total] => 3
            )    [1] => stdClass Object
            (
                [total] => 3
                [name] => Tree
            ))