比如
$families = array
(
  "Griffin"=>array
  (
  "Peter"=>50
  ),
  "Brown"=>array
  (
  "Cleveland"=>30
  )
);
正序排,排完序后的键名和对应的键值不变,形如下面的形式:
$families = array
(
  
  "Brown"=>array
  (
  "Cleveland"=>30
  ),
"Griffin"=>array
  (
  "Peter"=>50
  )
);

解决方案 »

  1.   

    你并未涉及第二维,可作为一维处理
    $families = array(
      "Griffin" => array(
        "Peter"=>50
      ),
      "Brown"=>array(
        "Cleveland"=>30
      ),
    );ksort($families);
    print_r($families);Array
    (
        [Brown] => Array
            (
                [Cleveland] => 30
            )    [Griffin] => Array
            (
                [Peter] => 50
            ))
      

  2.   

    ksort() 函数按照键名对数组排序,为数组值保留原来的键。
    此处要求是用键值对数组排序。例如:
    $families2 = array
    (
      "Griffin"=>array
      (
      "Peter"=>50  )
    ,
      "Krown"=>array
      (
      "Cleveland"=>30
      ),
    "Brown"=>array
      (
      "Cleveland"=>10
      ),
    );
    如果用ksort()的话,就不对了,出来的结果是
    Array
    (
        [Brown] => Array
            (
                [Cleveland] => 10
            )    [Griffin] => Array
            (
                [Peter] => 50
            )    [Krown] => Array
            (
                [Cleveland] => 30
            ))
    没有正序排
      

  3.   


    ksort() 函数按照键名对数组排序,为数组值保留原来的键。
    而此处是要求对键值进行排序。用ksort达不到要求的,例如
    $families2 = array
    (
      "Griffin"=>array
      (
      "Peter"=>50  )
    ,
      "Krown"=>array
      (
      "Cleveland"=>30
      ),
    "Brown"=>array
      (
      "Cleveland"=>10
      ),
    );用ksot排序后如下:
    Array
    (
        [Brown] => Array
            (
                [Cleveland] => 10
            )    [Griffin] => Array
            (
                [Peter] => 50
            )    [Krown] => Array
            (
                [Cleveland] => 30
            ))
    没有达到排序要求
      

  4.   

    foreach($families as $v) 
          foreach($v as $vl) $p[]=$vl;
      
    array_multisort($p,SORT_ASC,$families);   
    print_r($families);