如何在不破坏Array结构的情况下基于PHP中的值对数组进行排序

时间:2015-02-17 08:43:43

标签: php arrays sorting

我想根据“匹配”索引值对数组进行排序,如下所示:

Array
(
    [0] => Array
        (
            [U] => Array
                (
                    [user_id] => 10443
                    [match] => 100
                )

        )

)

此数组的匹配值如25,50,75等......

我尝试了以下代码,但没有奏效:

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
    $sort_col = array();
    foreach ($arr as $key=> $row) {
        $sort_col[$key] = $row['U'][$col];
    }
    return array_multisort($sort_col, $dir, $arr);
}

$a_sl =$this->array_sort_by_column($a_sl, 'match');

其中$ a_sl包含上面提到的数组结构。

如何在不破坏数组结构的情况下根据匹配对此数组进行排序。

1 个答案:

答案 0 :(得分:0)

我使用以下代码按子值对数组进行排序:

function array_sort_subval($a, $subkey) {

  if (!is_array($a) || count($a) == 0) {
    return $a;
  }

  $i = 0; // Required to work around items with the same subkey value
  foreach($a as $k=>$v) {
    $b[$v[$subkey] . $i] = $v;
    $i++;
  }

  ksort($b);

  foreach($b as $key=>$val) {
    $c[] = $val;
  }

  return $c;

}

要对数组的更深层元素进行排序,只需更改行

即可
$b[$v[$subkey] . $i] = $v;

获取要排序的更深的$子键。