重新排序多维数组?

时间:2010-03-22 08:42:13

标签: php arrays

我有以下数组,我需要按平均评分降序重新排序。这是一个片段。知道怎么做这个吗?

由于

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => 
            [rating] => 0
        )

    [1] => Array
        (
            [id] => 2
            [name] => 
            [rating] => 2
        )
)

2 个答案:

答案 0 :(得分:3)

您可以使用usort()

usort($arr, 'by_rating');

function by_rating($a, $b) {
  if ($a['rating'] == $b['rating']) {
    return 0;
  } else {
    return $a['rating'] < $b['rating'] ? -1 : 1;
  }
}

或反过来:

function by_rating($a, $b) {
  if ($a['rating'] == $b['rating']) {
    return 0;
  } else {
    return $a['rating'] < $b['rating'] ? 1 : -1;
  }
}

答案 1 :(得分:1)

使用PHP的usort()功能。您可以提供自己的回调函数,该函数使用2个输入调用。您可以在函数中执行您喜欢的任何比较,并返回您认为最佳的值等等:

function myComparison($val1, $val2)
{
  if ($val1["rating"] == $val2["rating"])
  {
    return 0;
  }
  return ($val1["rating"] < $val2["rating"]) ? -1 : 1;  
}

usort($inputArray, "myComparison");

(来自PHP网站的示例,上面的结果集采用)。