Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中对数组进行排序?_Php_Arrays_Sorting - Fatal编程技术网

如何在php中对数组进行排序?

如何在php中对数组进行排序?,php,arrays,sorting,Php,Arrays,Sorting,我有这样的数据 数组([0]=>stdClass对象([id]=>1[title]=>AAAA[statement]=>abcdefgh[rank]=>3)[1]=>stdClass对象([id]=>2[title]=>bbbbbb[statement]=>ijklmn[rank]=>1[3]=>stdClass对象([id]=>3[title]=>CCC[statement]=>opqrstu[rank]=>2]) 显示数据: foreach($data as $d) { $title

我有这样的数据

数组([0]=>stdClass对象([id]=>1[title]=>AAAA[statement]=>abcdefgh[rank]=>3)[1]=>stdClass对象([id]=>2[title]=>bbbbbb[statement]=>ijklmn[rank]=>1[3]=>stdClass对象([id]=>3[title]=>CCC[statement]=>opqrstu[rank]=>2])

显示数据:

foreach($data as $d)
{
   $title = $d->title;
   $sentence = $d->sentence;
   $rank = $d->rank;
   echo $title. " | " .$sentence. " | " .$rank. "<br>";
}
foreach($d数据)
{
$title=$d->title;
$SENTURE=$d->SENTURE;
$rank=$d->rank;
echo$title.“|”。$句子.|“$等级.
”; }

如何按“排名”排序?谢谢您的帮助。

这就是您的课程派上用场的地方。您自己编写了一个方便的小排序算法,它将数组作为参数,返回一个已排序内容的数组。。。这只是几个for循环。外部循环从0到数组的长度。内环是从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。

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

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

usort($data, 'rank_compare');

更多信息:

生产代码中的气泡排序??!?!?!嘿,如果他不知道怎么分类,他就得从某个地方开始。诚然,我更愿意首先对它进行排序和索引……我同意。这是内置函数
sort
的手册页面。如果您不了解基本排序算法,您将无法正确使用sort。我曾经处理过太多糟糕的代码,这些人只是在不知道排序算法是什么的情况下开始使用排序。如果问题是关于排序算法理论的,那么你会有一个观点(但答案仍然是不好的,因为bubble是你能做的最糟糕的排序,你甚至没有提到任何替代方案)。目前的问题是“如何对这个数组进行排序?”而“编写自己的bubblesort”是一个非常糟糕的答案。它是一个对象数组!不仅仅是一系列的东西。答案只是稍微澄清一下:回调不需要返回1或-1,只需要返回一个大于或小于0的整数。这意味着您可以将这种情况下的回调(比较的字段是一个整数)简化为
函数($a,$b){return$a->rank-$b->rank;}
@IMSop优雅…我必须记住这一点,我可以解决这个问题。谢谢你的帮助。不客气,鲍勃!一旦你的
rank
实际上是一个数字,我认为数字运算符更合适。