1

我有这样的数据

array([0] => stdClass Object ( [id] => 1 [title] => AAAA [sentence] => abcdefgh [rank] => 3 ) [1] => stdClass Object ( [id] => 2 [ title] => BBBB [sentence] => ijklmn [rank] => 1 ) [3] => stdClass Object ( [id] => 3 [title] => CCC [sentence] => opqrstu [rank] => 2 ));

显示数据:

foreach($data as $d)
{
   $title = $d->title;
   $sentence = $d->sentence;
   $rank = $d->rank;
   echo $title. " | " .$sentence. " | " .$rank. "<br>";
}

如何按“排名”对其进行排序?谢谢你的帮助。

4

3 回答 3

0

使用php的usort函数

usort($array, function($a, $b){
    if ($a->rank == $b->rank) return 0;
    return ($a->rank > $b->rank)?1:-1;
});

usort 接受数组和一个比较函数,如果两个参数在排序方面相等,比较函数应该返回 0,如果第一个参数大于第二个参数,则返回 1,如果第一个参数小于第二个参数,则返回 -1 .

于 2013-05-09T13:03:51.753 回答
0

您可以将 PHP与使用对象属性作为标准usort的函数一起使用:rank

function rank_compare($a, $b) {
    return $a->rank - $b->rank;
}

usort($data, 'rank_compare');

更多信息:http ://www.php.net/manual/en/function.usort.php

于 2013-05-09T13:04:15.200 回答
-1

这就是你的冒泡排序课程派上用场的地方。您自己编写了一个方便的小排序算法,该算法接受一个数组作为参数,返回一个排序后的数组......而且它只是几个 for 循环。外循环是从 0 到数组的长度。内循环是从 0 到数组长度减去外循环。对于内部循环,将当前值与下一个值进行比较 - 如果当前值“更大”,则将其冒泡。第一次通过外循环后,最大值在顶部。在第二次通过后,第二大是从顶部开始的第二个。等等。

于 2013-05-09T12:57:20.260 回答