【问题标题】:Sort multidimensional array [duplicate]对多维数组进行排序[重复]
【发布时间】:2012-07-18 12:07:48
【问题描述】:

可能重复:
How do I sort a multidimensional array in php

我有多维数组,例如:

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array ("z","a")));

我想对所有数组元素进行排序(升序),我写了递归函数,但它不起作用,请告诉我,我错了吗?

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array("z","a")));



function sortsort($m) {
    sort($m);
    foreach ($m as &$v) {
        if (is_array($v)) {
             sortsort($v);
        }
    }
    return $m;
}



  var_dump(sortsort($mas));

【问题讨论】:

  • 如果你把sortsort($m)的定义改成sortsort(&$m),问题就解决了吗?

标签: php recursion return


【解决方案1】:

试试这个

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array("z","a")));
function sortsort(&$m) {
    sort($m);
    foreach ($m as $k=>$v) {
        if (is_array($v)) {
             sortsort($m[$k]);
        }
    }
    return $m;
}

print_r(sortsort($mas));

【讨论】:

    【解决方案2】:

    使用

    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($your_array,"order");

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 2018-09-22
      • 2018-02-01
      相关资源
      最近更新 更多