Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中基于值对数组排序而不破坏数组结构_Php_Arrays_Sorting - Fatal编程技术网

如何在PHP中基于值对数组排序而不破坏数组结构

如何在PHP中基于值对数组排序而不破坏数组结构,php,arrays,sorting,Php,Arrays,Sorting,我想根据“匹配”索引值对数组进行排序,如下所示: Array ( [0] => Array ( [U] => Array ( [user_id] => 10443 [match] => 100 ) ) ) 此数组将具有匹配值,如25、50、75等 我尝试了以下代

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

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包含上述数组结构


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

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

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;

要获得您想要排序的更深的$subkey。

但这段代码不适合我…任何人都有更好的解决方案…使用一个自编的比较函数。当然,如果您需要按数字排序,可以将sort\u数字标志添加到ksort