如何在php中对多值数组进行排序
我有一个要排序的多值数组如何在php中对多值数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个要排序的多值数组 Array( [0] => word1 131 [1] => word2 3 [2] => word3 5 [3] => word4 4 [4] => word5 16 [5] => word6 29 ) 如何使用右边的数值对其进行排序,使结果如下所示 Array( [0] => word2 3 [1] => word4 4 [2] => wo
Array(
[0] => word1 131
[1] => word2 3
[2] => word3 5
[3] => word4 4
[4] => word5 16
[5] => word6 29
)
如何使用右边的数值对其进行排序,使结果如下所示
Array(
[0] => word2 3
[1] => word4 4
[2] => word3 5
[3] => word5 16
[4] => word6 29
[5] => word1 131
)
Thx您需要使用explode或str_split()来分离右侧的数字,使用array_sort()或一个相关函数进行排序,然后重新组装数组。您需要使用并创建一个回调函数来解析字符串并对数据进行排序
function usort_callback($a, $b)
{
$a = preg_replace('/^.+\s(\d+)$/', '$1', $a);
$b = preg_replace('/^.+\s(\d+)$/', '$1', $b);
return ( intval($a) < intval($b) ) ? -1 : 1;
}
usort($array, 'usort_callback');
函数usort\u回调($a,$b)
{
$a=preg_replace('/^.+\s(\d+)$/','$1',$a);
$b=preg_replace('/^.+\s(\d+)$/','$1',$b);
返回(intval($a)
定义比较函数并使用usort。在比较函数中,您可以使用str_split或pregmatch来获取字符串的有趣部分。您可以使用usort
和如下用户函数:
<?php
function cmp($a, $b) {
$a = (int)substr(strstr($a, ' '), 1);
$b = (int)substr(strstr($b, ' '), 1);
return ($a < $b) ? -1 : 1;
}
$array = array(
'word1 131',
'word2 3',
'word3 5',
'word4 4',
'word5 16',
'word6 29'
);
usort($array, "cmp");
foreach ($array as $key => $value) {
echo "$key: $value\n";
}
?>
这是一个伟大的人!非常感谢你!我只是浪费了几个小时不知道usort函数lol@kuntau-我很高兴能帮上忙。祝你度过愉快的一天。调用regex引擎也很好!谢谢对不起,现在还不能投票:(