Home  >  Article  >  Backend Development  >  Detailed explanation of array sorting function in PHP_PHP tutorial

Detailed explanation of array sorting function in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:11:07930browse

PHP comes with a large number of array sorting functions. Let’s introduce the usage of PHP array sorting one by one.

The array is used as a parameter of the sorting function. After sorting, the array itself changes, and the return value of the function is of type bool.

2 The single a appearing in the function name means association, which means that in the process of sorting by value, the corresponding relationship of key=>value remains unchanged

3 The single a appearing in the function name means association. k represents key, which means that in the process of sorting by value, the array key is sorted instead of the value of the array

4 A single r appearing in the function name represents reverse, which means that the order is the opposite of that without r. The order of

5 The single u appearing in the function name means user-defined, which means that the user-defined function is used to sort. If the logic of the function is that parameter 1

--------------------sort function ascending order-------------------- ------------

代码如下 复制代码
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
var_dump($fruits);
?>
结果:
array
0 => string 'apple' (length=5)
1 => string 'banana' (length=6)
2 => string 'lemon' (length=5)
3 => string 'orange' (length=6)

--------------------rsort in descending order------ ---------------

 代码如下 复制代码
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
var_dump($fruits);
?>
结果:
array
0 => string 'orange' (length=6)
1 => string 'lemon' (length=5)
2 => string 'banana' (length=6)
3 => string 'apple' (length=5)

---------------asort is arranged in ascending order of the two-dimensional array values ​​(keeping the key =>value association) -----------

 代码如下 复制代码
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
var_dump($fruits);
?>
结果:
array
'c' => string 'apple' (length=5)
'b' => string 'banana' (length=6)
'd' => string 'lemon' (length=5)
'a' => string 'orange' (length=6)

--------------arsort is arranged in descending order of the two-dimensional array values ​​(maintaining the association of key=>value)------------- -

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

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
var_dump($fruits);
?>
结果
array
'a' => string 'orange' (length=6)
'd' => string 'lemon' (length=5)
'b' => string 'banana' (length=6)
'c' => string 'apple' (length=5)

--------------------ksort按照数组的key升序排列-------------- "lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
var_dump($fruits);
?>
结果
array
'a' => string 'orange' (length=6)
'b' => string 'banana' (length=6)
'c' => string 'apple' (length=5)
'd' => string 'lemon' (length=5)

$fruits = array("d" => "lemon", "a" => "orange", "b" => " banana", "c" => "apple");arsort($fruits);
 代码如下 复制代码

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
var_dump($fruits);
?>

array
'd' => string 'lemon' (length=5)
'c' => string 'apple' (length=5)
'b' => string 'banana' (length=6)
'a' => string 'orange' (length=6)

var_dump($fruits);

?>
result

array
 代码如下 复制代码

function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

var_dump($a);
?>
结果:
array
0 => int 1
1 => int 2
2 => int 3
3 => int 5
4 => int 6

' a' => string 'orange' (length=6)

'd' => string 'lemon' (length=5)

'b' => string 'banana' (length=6)
 代码如下 复制代码

function cmp($a, $b)
{
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

var_dump($a);
?>
结果:
array
'an apple' => int 3
'a banana' => int 4
'the Earth' => int 2
'John' => int 1

'c' => string 'apple' (length=5)--------------------ksort is in ascending order according to the key of the array Arrangement-------------- "lemon", "a"=>"orange", "b"=> "banana", "c"=>"apple");ksort($fruits);var_dump($fruits);?>resultarray 'a' => string 'orange' (length=6)'b' => string 'banana' (length=6)'c' => string 'apple' (length=5 )'d' => string 'lemon' (length=5)
------------- --------krsort sorts the array keys in descending order--------------------------------
The code is as follows Copy code
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", " c"=>"apple");krsort($fruits);var_dump($fruits);?>array'd' => string 'lemon' (length=5)'c' => string 'apple' (length=5)'b' => string 'banana' (length=6)'a ' => string 'orange' (length=6)
---------------- The usort function is sorted according to user-defined functions----------------
The code is as follows Copy code
function cmp($a, $b )<🎜>{<🎜>if ($a == $b) {<🎜>return 0;<🎜>}<🎜>return ($a < $b) ? -1 : 1;<🎜>} <🎜><🎜>$a = array(3, 2, 5, 6, 1);<🎜><🎜>usort($a, "cmp");<🎜><🎜>var_dump($a); <🎜>?>Result: array0 => int 11 => int 22 => int 33 => int 54 => int 6
-----------------uksort uses a custom function Sort by the key of the array-----------------
The code is as follows Copy code
function cmp($a, $b)<🎜 >{<🎜>$a = preg_replace('@^(a|an|the) @', '', $a);<🎜>$b = preg_replace('@^(a|an|the) @' , '', $b);<🎜>return strcasecmp($a, $b);<🎜>}<🎜><🎜>$a = array("John" => 1, "the Earth" => ; 2, "an apple" => 3, "a banana" => 4);uksort($a, "cmp");var_dump($a); ?>Result: array'an apple' => int 3'a banana' => int 4'the Earth' => int 2'John' => int 1

------------------uasort uses a custom function to sort the array by value, keeping the index relationship unchanged---------

uasort($array, 'cmp'); var_dump($array);
The code is as follows
 代码如下 复制代码

// Comparison function
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
var_dump($array);

// Sort and print the resulting array
uasort($array, 'cmp');
var_dump($array);
?>
结果:
array
'a' => int 4
'b' => int 8
'c' => int -1
'd' => int -9
'e' => int 2
'f' => int 5
'g' => int 3
'h' => int -4
array
'd' => int -9
'h' => int -4
'c' => int -1
'e' => int 2
'g' => int 3
'a' => int 4
'f' => int 5
'b' => int 8

Copy code

 代码如下 复制代码

$ar = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);

array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>
结果:
array
0 =>
array
0 => string '10' (length=2)
1 => int 100
2 => int 100
3 => int 11
4 => string 'a' (length=1)
1 =>
array
0 => int 1

// Comparison function
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4 , 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3 , 'h' => -4);var_dump($array);

// Sort and print the resulting array
?>
Result: array

'a' => int 4

'b' => int 8'd' => int -9'e' => int 2'f' => int 5'g' => int 3 'h' => int -4array'd' => int -9'h' => int -4'c' => int -1'e' => int 2'g' => int 3
'a' => int 4'f' => int 5' b' => int 8
-------------------array_multisort Sort multiple arrays or multi-dimensional arrays- --------
The code is as follows Copy code
$ar = array(<🎜>array("10", 11, 100, 100, "a"),<🎜> array( 1, 2, "2", 3, 1)<🎜>);<🎜><🎜>array_multisort($ar[0], SORT_ASC, SORT_STRING,<🎜>$ar[1], SORT_NUMERIC, SORT_DESC) ;<🎜>var_dump($ar);<🎜>?>Result: array0 => array0 => string '10' (length= 2)1 => int 1002 => int 1003 => int 114 => string 'a' (length=1)1 = > array0 => int 1 1 => int 32 => string '2' (length= 1)3 => int 24 => int 1//Explanation: 1 In the above example: the $ar array is prioritized in ascending order according to the string value of $ar[0] Arrange, if the string values ​​​​are equal, then sort according to the numeric value of the $ar[1] array in descending order. 2 If the parameter at any position of the array_multisort function is an array, it represents the value used for sorting. If there are multiple array parameters, the previous array value will be sorted first. If it is a constant, such as SORT_ASC, SORT_DESC, SORT_REGULAR,SORT_NUMERIC, SORT_STRING. indicates the sorting method (array values ​​are taken first). http://www.bkjia.com/PHPjc/444669.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444669.htmlTechArticle PHP comes with a large number of array sorting functions. Let’s introduce one by one about PHP array sorting. How to use it. The array is used as a parameter of the sorting function. After sorting, the array itself...
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