如何在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引擎也很好!谢谢对不起,现在还不能投票:(