Home Backend Development PHP Tutorial Summary of some PHP array sorting function examples_PHP tutorial

Summary of some PHP array sorting function examples_PHP tutorial

Jul 13, 2016 pm 05:00 PM
php function Can exist accomplish Summarize sort array have of Example Simple

There are many functions that can be used to sort arrays in php. If it is a simple one-dimensional array sort, we can use the sorting function that comes with php, but for multi-dimensional arrays, we need to write it ourselves.


I have been worried since I came back, so I looked up the book and found the answer. In order to remember them, I decided to make a summary of array sorting functions.


The first thing I came into contact with was the problem of PHP array sorting and descending order.

sort: This function assigns new key names to the cells in the array. This will delete the original keys rather than just reorder them.
rsort: This function sorts the array in reverse order (highest to lowest). Delete the original key names instead of just reordering them.
asort: Sort the array and maintain the index relationship
arsort: Sort the array in reverse and maintain the index relationship

ksort: Sort the array by key name and retain the association between key name and data
krsort: Sort the array in reverse order by key name, retaining the association between key name and data

natsort: Sort alphanumeric strings while maintaining original key/value associations
natcasesort: Same as natsort sorting algorithm, but case-insensitive sorting


PHP array sort (sort)
Numeric index array sorting:
Function: sort(array, [sort type])
Description: The sort() function sorts the specified array (first parameter) in ascending order.
The second parameter of the sort function is used to specify the sorting type and is an optional parameter. The possible values ​​are:
SORT_REGULAR: Default value, sort without changing the type;
SORT_NUMERIC: Sort values ​​as numbers;
SORT_STRING: Sort values ​​as strings;
For example, if there are 4 and "37" in the array, if you sort by numbers, 4 is less than "37"; if you sort by strings, 4 is greater than "37";


1. One-dimensional array

Suppose there is a one-dimensional array, as follows:


$sortArr = array("name"=>"hiro", "age"=>"23", "city"=>"Shanghai", "code"=>"200051");
The original array result output by print_r() is:


Array ( [name] => hiro [age] => 23 [city] => Shanghai [code] => 200051 )

1.sort() function: sort in ascending order according to the array subscript;
The array result output by print_r() is (only the array subscript is output, not the key name):

1
Array ( [0] => 23 [1] => 200051 [2] => Shanghai [3] => hiro )

2.rsort() function: Contrary to the sort() function, sort in descending order according to the array subscript;
The array result output by print_r() is (only the array subscript is output, not the key name):


Array ( [0] => hiro [1] => Shanghai [2] => 200051 [3] => 23 )

3.asort() function: Sort in ascending order according to the key name of the array;
The array result output by print_r() is:

1
Array ( [age] => 23 [code] => 200051 [city] => Shanghai [name] => hiro )

4.arsort() function: Contrary to the asort() function, it sorts in descending order according to the key name of the array;
The array result output by print_r() is:


Array ( [name] => hiro [city] => Shanghai [code] => 200051 [age] => 23 )

5.ksort() function: Sort in ascending order according to the key value of the array;
The array result output by print_r() is:


Array ( [age] => 23 [city] => Shanghai [code] => 200051 [name] => hiro )

6.krsort() function: Contrary to the ksort() function, it sorts in descending order according to the key values ​​of the array;
The array result output by print_r() is:

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


 Array ( [name] => hiro [city] => Shanghai [code] => 200051 [age] => 23 )

Array ( [name] => hiro [city] => Shanghai [code] => 200051 [age] => 23 )

7.reverse_array() function: reverse the current array order;

The array result output by print_r() is:

 代码如下 复制代码
 Array ( [name] => hiro [age] => 23 [city] => Shanghai [code] => 200051 )

8.shuffle() function: Arrange the array order randomly (the order is different after each refresh);
The array result output by print_r() is (just one of the random arrangements):


Array ( [0] => 23 [1] => 200051 [2] => Shanghai [3] => hiro )

2. Two-dimensional array
Suppose there is a two-dimensional array as follows:

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

 $person = array(
 array("hiro", "23", "suzhou"),
 array("yoyo", "25", "shanghai"),
 array("janstar", "28", "xinjiang")
);
print_r()输出的原始数组结果为:

1
 Array ( [0] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) [2] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) )

$person = array(

array("hiro", "23", "suzhou"),

array("yoyo", "25", "shanghai"),

array("janstar", "28", "xinjiang")

);
 代码如下 复制代码

function compare0($x, $y) {
 if($x[0] == $t[0]) {
  return 0;
 } elseif ($x[0] < $y[0]) {
return -1;
} else {
return 1;
}
}

usort($person, compare0);
echo "按第一个元素正向排序:";
print_r($person);
输出的结果如下:

1
按第一个元素正向排序:Array ( [0] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) [2] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) )

The original array result output by print_r() is:

1
 代码如下 复制代码

function compare2($x, $y) {
 if($x[2] == $t[2]) {
  return 0;
 } elseif ($x[2] < $y[2]) {
return -1;
} else {
return 1;
}
}

usort($person, compare2);
echo "按第三个元素正向排序:";
print_r($person);
输出的结果如下:


按第三个元素正向排序:Array ( [0] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) [1] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [2] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) )

Array ( [0] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) [2] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) )

The sorting of two-dimensional arrays is based on the key name of each dimension, so an additional comparison function needs to be written. Let’s give three examples:
 代码如下 复制代码
function reverse_compare2($x, $y) {
 if($x[2] == $t[2]) {
  return 0;
 } elseif ($x[2] < $y[2]) {
return 1; //改变后即可反向
} else {
return -1; //改变后即可反向
}
}

usort($person, reverse_compare2);
<🎜>1. Sort by the first element of each dimension in ascending order, the code is as follows: <🎜>
The code is as follows Copy code
<🎜>function compare0($x, $y) {<🎜> if($x[0] == $t[0]) {<🎜> Return 0;<🎜> } elseif ($x[0] < $y[0]) {<🎜> Return -1;<🎜> } else {<🎜> Return 1;<🎜> }<🎜> }<🎜> <🎜> usort($person, compare0);<🎜> echo "Sort forward by the first element:";<🎜> print_r($person); <🎜> The output results are as follows: <🎜> <🎜>1<🎜> Sort forward by the first element: Array ( [0] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => Array ( [ 0] => janstar [1] => 28 [2] => xinjiang ) [2] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) )
2. Sort by the third element of each dimension in ascending order, the code is as follows:
The code is as follows Copy code
function compare2($x, $y) { if($x[2] == $t[2]) { Return 0; } elseif ($x[2] < $y[2]) {<🎜> Return -1;<🎜> } else {<🎜> Return 1;<🎜> }<🎜> }<🎜> <🎜> usort($person, compare2);<🎜> echo "Sort forward by the third element:";<🎜> print_r($person); <🎜> The output results are as follows: <🎜> <🎜><🎜> Sort forward by the third element: Array ( [0] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) [1] => Array ( [ 0] => hiro [1] => 23 [2] => suzhou ) [2] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) )
3. Sort by the third element of each dimension in ascending order, the code is as follows:
The code is as follows Copy code
function reverse_compare2($x, $y) { if($x[2] == $t[2]) { return 0; } elseif ($x[2] < $y[2]) {<🎜> Return 1; //You can reverse it after changing it<🎜> } else {<🎜> Return -1; //Reverse after changing<🎜> }<🎜> }<🎜> <🎜> usort($person, reverse_compare2);<🎜>

echo "Sort by the third element in reverse order:";
print_r($person);
The output results are as follows:

1
Sort in reverse order by the third element:

代码如下 复制代码
Array ( [0] => Array ( [0] => janstar [1] => 28 [2] => xinjiang ) [1] => Array ( [0] => hiro [1] => 23 [2] => suzhou ) [2] => Array ( [0] => yoyo [1] => 25 [2] => shanghai ) )

Haha, there are too many codes, please write them down for easy reference later!

Example

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

error_reporting(0);

/**
* @数字数组排序 可按从大到小或从小到大排序
*/
function sortArray($array, $choice) {
$values = array_values($array); // 建立一个数字索引的数组
$ch = $choice==0 ? min:max; // 参数$choice为0按从小到大排列,否则其他都默认为按从大到小
do {
$val = $ch($values); // 找出最大或最小值
$key = array_search($val,$values); // 取得最大值的键名
$result[$key] = $val; // 将最大值存入新数组
unset($values[$key]);
} while (count($values) > 0);
    return $result;
}

$array = array(100, 1000, 1, 10000);
//$array = sortArray($array, 0);
$array = sortArray($array, 1);
foreach($array as $a) {
    echo "$a ";
}
?>

Copy code
error_reporting(0);

/***/ function sortArray($array, $choice) { $values ​​= array_values($array); // Create a numerically indexed array $ch = $choice==0 ? min:max; // If the parameter $choice is 0, the order is from small to large, otherwise the others will be arranged from large to small by default do {            $val = $ch($values); // Find the maximum or minimum value           $key = array_search($val,$values); // Get the key name with the maximum value           $result[$key] = $val; // Store the maximum value in the new array           unset($values[$key]); } while (count($values) > 0); Return $result; } $array = array(100, 1000, 1, 10000);
//$array = sortArray($array, 0);
$array = sortArray($array, 1); foreach($array as $a) { echo "$a "; } ?> http://www.bkjia.com/PHPjc/631245.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631245.htmlTechArticleThere are many functions that can be implemented for array sorting in php. If it is a simple one-dimensional array sorting, we can use php It comes with a sorting function, but for multi-dimensional arrays we need to write it ourselves. ...
Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

CakePHP Logging CakePHP Logging Sep 10, 2024 pm 05:26 PM

Logging in CakePHP is a very easy task. You just have to use one function. You can log errors, exceptions, user activities, action taken by users, for any background process like cronjob. Logging data in CakePHP is easy. The log() function is provide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP is an open source MVC framework. It makes developing, deploying and maintaining applications much easier. CakePHP has a number of libraries to reduce the overload of most common tasks.

See all articles