如何在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