此问题旨在提供关于PHP数组排序的问题的参考。您可能认为您的特殊情况是独一无二的,并值得一个新问题,但大多数实际上只是本页解决方案的轻微变体。
如果您的问题被关闭并作为重复问题,请仅在您能够解释它与下面所有问题都有显著不同之处时,请请求重新打开您的问题。
如何在PHP中对数组进行排序?
如何对复杂数组进行排序?
如何对对象数组进行排序?
对于使用PHP现有函数的实用答案,请参见1.;对于排序算法的学术详细答案(PHP的函数实现和您可能需要应对真正复杂的情况),请参见2。
此问题旨在提供关于PHP数组排序的问题的参考。您可能认为您的特殊情况是独一无二的,并值得一个新问题,但大多数实际上只是本页解决方案的轻微变体。
如果您的问题被关闭并作为重复问题,请仅在您能够解释它与下面所有问题都有显著不同之处时,请请求重新打开您的问题。
如何在PHP中对数组进行排序?
如何对复杂数组进行排序?
如何对对象数组进行排序?
对于使用PHP现有函数的实用答案,请参见1.;对于排序算法的学术详细答案(PHP的函数实现和您可能需要应对真正复杂的情况),请参见2。
有几种方法可以对数组进行排序。我将提及一些完成此任务的方法。首先,我将给出一个称为“$numbers”的整数数组。
$number = array(8,9,3,4,0,1,2);
这是创建数组的常规方式。假设我想按升序对该数组进行排序。可以使用 'sort()' 方法。
<?php
$number = array(8,9,3,4,0,1,2);
sort($number);
foreach ($number as $value) {
echo $value." ";
}
?>
现在考虑一下它的输出结果,
你可以看到打印的数字数组已经排序。如果你想让这个数字数组以降序排列,可以使用 'rsort()' 方法来完成。
<?php
$number = array(8,9,3,4,0,1,2);
rsort($number);
foreach ($number as $value) {
echo $value." ";
}
?>
考虑输出..
现在数组已按降序排序。好的,让我们考虑一个关联数组。我会给出一个关联数组(关联数组是指每个索引都具有唯一键值的数组)如下:
$number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
现在,我想按照它们的值升序排序这个数组。可以使用'asort()'方法来实现。
<?php
$number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
asort($number);
foreach ($number as $value) {
echo $value." ";
}
?>
<?php
$number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
ksort($number);
foreach ($number as $value) {
echo $value." ";
}
?>
现在,数组根据其键值进行排序。如果您想按键值降序对数组进行排序,则可以使用“krsort()”方法。
<?php
$number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
krsort($number);
foreach ($number as $value) {
echo $value." ";
}
?>
这些是在PHP中按升序或降序对数组进行排序的一些方法。希望您能够得到一个想法。谢谢!
这个答案是关于多列排序的,其中数组应该按照非连续索引的值,在每个一维元素内进行排序。 这与多维排序不同,因为每个元素仅由各种键=>值对组成。
function fncCmp( array $ItmOne, array $ItmTwo ) { ; # callback for sorting items (which are arrays) by values at specific indexes
$strCmpOne = $ItmOne[ 'ColOne' ] . $ItmOne[ 'ColThr' ]; # build compound values
$strCmpTwo = $ItmTwo[ 'ColOne' ] . $ItmTwo[ 'ColThr' ]; # to compare
return $strCmpOne <=> $strCmpTwo ; # pass back comparison-result
} # fncCmp
$arrDat = array( # define an array of items
array( 'ColOne' => 'Val2', 'ColTwo' => 'Val8', 'ColThr' => 'Val6' ) # each of which
,array( 'ColOne' => 'Val2', 'ColTwo' => 'Val9', 'ColThr' => 'Val4' ) # is an
,array( 'ColOne' => 'Val1', 'ColTwo' => 'Val7', 'ColThr' => 'Val5' ) # array of
) ; # fields
var_dump ( $arrDat ) ; # emit items before sort
$bolSrt = usort( $arrDat, 'fncCmp' ) ; # sort the array by comparing elements
var_dump ( $arrDat ) ; # emit items after sort
$collection->sortBy('forename')->sortBy('surname');
sortBy('c')->sortBy('b')->sortBy('a')
$array_compare= array("0" =>4,"1"=>2,"2"=>500,"3"=>100);
这将按降序排序:
usort($array_compare, function($a, $b) {
return ($b['x1'] - $a['x1']) > 0 ? 1 :-1;
});
这将按升序排序:
usort($array_compare, function($a, $b) {
return ($b['x1'] - $a['x1']) < 0 ? 1 :-1;
});