Home >Backend Development >PHP Tutorial >Summary of various methods of php array sorting_PHP tutorial

Summary of various methods of php array sorting_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:57:091301browse

There are many array sorting functions in php (rsort, sort, asort, rsort, krsort, ksort, array_multisort). Let me summarize for you some of the array sorting functions we commonly use and the array sorting written by users themselves. Examples, friends who need to use them can refer to them.

The most commonly used function for array sorting is sort($arr); its function is to sort the array keys in ascending order, and the sorted array key names are no longer the original key names, but are reset according to the new array key name.
And sometimes we require more complex sorting. For example, if you sort by key name, the ksort($arr); function is used here, which will sort the array according to the key name and maintain the original key-value relationship. The corresponding asort($arr); function sorts by key value and maintains the original key-value relationship.

Same principle, rsort(); arsort(); krsort(); function is the same as sort(); rsort(); ksort(); except that the sorting is in descending order.
Array operations are a very important foundation of PHP, and I hope you can use them well.


Sort by key value
That is, the order is arranged according to the size of the identifier ASCⅡ code value.

ksort(): Sort by array identifier order
krsort(): Sort array identifier in reverse order
Example 1:

The code is as follows Copy code
 代码如下 复制代码

$languages=array(
'c'=>'php',
  'd'=>'asp',
  'a'=>'jsp',
  'b'=>'java'
 );
 krsort($languages);
 foreach($languages as $key=>$val){
  echo "$key = $val".'
';
 };
?>

$languages=array(

'c'=>'php',

'd'=>'asp',
'a'=>'jsp',
'b'=>'java'
);

krsort($languages);
 代码如下 复制代码

asort($languages);
print_r($languages);
echo "
";
rsort($languages);
print_r($languages);

foreach($languages ​​as $key=>$val){

echo "$key = $val".'
';
};

?>


Sort by element value

asort(): Sort the array from small to large;

rsort(): Sort the array in reverse order from large to small.
 代码如下 复制代码

sort($languages);
foreach($languages as $key=>$val){
 echo "languages[$key] = $val".'
';
};

Change lines 8-11 of Example 1 to:

The code is as follows Copy code

asort($languages); print_r($languages);

echo "
";

rsort($languages);
 代码如下 复制代码

$ar1 = array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

print_r($languages);
Delete the original key name sorting sort(): Sort the array from small to large; rsort(): Sort the array in reverse order from large to small. Change lines 8-11 of Example 2 to:
The code is as follows Copy code
sort($languages); foreach($languages ​​as $key=>$val){ echo "languages[$key] = $val".'
'; };
array_multisort -- Sort multiple arrays or multidimensional arrays Description bool array_multisort (array ar1 [, mixed arg [, mixed ... [, array ...]]] ) Example 1. Sort multiple arrays
The code is as follows Copy code
$ar1 = array("10", 100, 100, "a");<🎜> $ar2 = array(1, 3, "2", 1);<🎜> array_multisort($ar1, $ar2);<🎜> <🎜>var_dump($ar1);<🎜> var_dump($ar2);<🎜> ?>

After sorting in this example, the first array will contain "10", "a", 100, 100. The second array will contain 1,1,"2",3. The order of the items in the second array is exactly the same as the order of the corresponding items (100 and 100) in the first array.

The code is as follows Copy code
 代码如下 复制代码

array(4) {
[0]=> string(2) "10"
[1]=> string(1) "a"
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(1)
[1]=> int(1)
[2]=> string(1) "2"
[3]=> int(3)
}

array(4) {

[0]=> string(2) "10"

[1]=> string(1) "a"

[2]=> int(100)

[3]=> int(100)
 代码如下 复制代码

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
?>

 

}

array(4) {

[0]=> int(1)

[1]=> int(1)
[2]=> string(1) "2"
[3]=> int(3)
}


Example 2. Sort multidimensional array

The code is as follows Copy code
代码如下 复制代码



$aa = array (array ("score"=>60),
    array ("score"=>70),
    array ("score"=>80),
    array ("score"=>90),
    array ("score"=>20),
    array ("score"=>10),
    array ("score"=>50),
    array ("score"=>30));
 
echo '------排序前输出------
';   
var_dump($aa); // 排序前输出
 
usort($aa, "cmp"); // 排序处理(从大到小)
 
echo '
------排序后输出------
';
var_dump($aa); // 排序完输出
 
/**
 * 自定义排序条件
 * @param array $a
 * @param array $b
 * @return bool
 */
function cmp($a, $b) {
 if ($a["score"] == $b["score"]) {
  return 0;
 }
 return ($a["score"] < $b["score"]) ? 1 : -1;
}

?>
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1)); array_multisort ($ar[0], SORT_ASC, SORT_STRING,                        $ar[1], SORT_NUMERIC, SORT_DESC); ?> After sorting in this example, the first array will contain 10, 100, 100, "a" (as ascending order of strings), and the second array will contain 1, 3, "2", 1 (as numerically descending order). There are many array sorting functions in PHP and they are very powerful Such as: arsort,asort,krsort,ksort,sort… But sometimes it still can’t meet our needs If there is a two-dimensional array, we need to sort it by a value in the two-dimensional array You need to use usort custom array sorting Examples are as follows:
The code is as follows Copy code
<🎜> $aa = array (array ("score"=>60), array ("score"=>70), Array ("score"=>80), Array ("score"=>90), array ("score"=>20), array ("score"=>10), array ("score"=>50), array ("score"=>30)); echo '------Output before sorting------
'; var_dump($aa); // Output before sorting usort($aa, "cmp"); // Sorting processing (from large to small) echo '
------Output after sorting------
'; var_dump($aa); // Output after sorting /** * Custom sorting conditions * @param array $a * @param array $b * @return bool ​*/ function cmp($a, $b) { if ($a["score"] == $b["score"]) { return 0; } return ($a["score"] < $b["score"]) ? 1 : -1;<🎜> }<🎜> <🎜> ?>

输出结果:

 代码如下
 代码如下 复制代码

------排序前输出------
array(8) { [0]=> array(1) { ["score"]=> int(60) }
 [1]=> array(1) { ["score"]=> int(70) }
 [2]=> array(1) { ["score"]=> int(80) }
 [3]=> array(1) { ["score"]=> int(90) }
 [4]=> array(1) { ["score"]=> int(20) }
 [5]=> array(1) { ["score"]=> int(10) }
 [6]=> array(1) { ["score"]=> int(50) }
 [7]=> array(1) { ["score"]=> int(30) } }
------排序后输出------
array(8) { [0]=> array(1) { ["score"]=> int(90) }
 [1]=> array(1) { ["score"]=> int(80) }
 [2]=> array(1) { ["score"]=> int(70) }
 [3]=> array(1) { ["score"]=> int(60) }
 [4]=> array(1) { ["score"]=> int(50) }
 [5]=> array(1) { ["score"]=> int(30) }
 [6]=> array(1) { ["score"]=> int(20) }
 [7]=> array(1) { ["score"]=> int(10) } }

复制代码
------排序前输出------
array(8) { [0]=> array(1) { ["score"]=> int(60) }
 [1]=> array(1) { ["score"]=> int(70) }
 [2]=> array(1) { ["score"]=> int(80) }
 [3]=> array(1) { ["score"]=> int(90) }
 [4]=> array(1) { ["score"]=> int(20) }
 [5]=> array(1) { ["score"]=> int(10) }
 [6]=> array(1) { ["score"]=> int(50) }
 [7]=> array(1) { ["score"]=> int(30) } }
------排序后输出------
array(8) { [0]=> array(1) { ["score"]=> int(90) }
 [1]=> array(1) { ["score"]=> int(80) }
 [2]=> array(1) { ["score"]=> int(70) }
 [3]=> array(1) { ["score"]=> int(60) }
 [4]=> array(1) { ["score"]=> int(50) }
 [5]=> array(1) { ["score"]=> int(30) }
 [6]=> array(1) { ["score"]=> int(20) }
 [7]=> array(1) { ["score"]=> int(10) } }

http://www.bkjia.com/PHPjc/631541.htmlwww.bkjia.comtrue
http://www.bkjia.com/PHPjc/631541.html
TechArticle
在php中数组排序函数有很多很多(rsort,sort,asort,rsort,krsort,ksort,array_multisort),下面我来给各位朋友总结我们常用到的一些数组排序函数与用户...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn