Php two-dimensional array sorting Implementation Program-PHP source code

Source: Internet
Author: User
In php, we can directly use the array_multisort () function to sort two-dimensional arrays. At the same time, I have also added some custom 2D array sorting codes for your reference. In php, we can directly use the array_multisort () function to sort two-dimensional arrays. At the same time, I have also added some custom 2D array sorting codes for your reference.

Script ec (2); script

First, let's look at the array_multisort () function.

The Code is as follows:

$ Ar = array (
Array ("10", 11,100,100, ""),
Array (1, 2, "2", 3, 1)
);
Array_multisort ($ ar [0], SORT_ASC, SORT_STRING,
$ Ar [1], SORT_NUMERIC, SORT_DESC );
Var_dump ($ ar );
?>

In this example, after sorting, the first array will become "10", 100,100, 11, "a" (sorted in ascending order as strings ). The second array will contain 1, 3, "2", 2, 1 (arranged in descending order as numbers ).

The Code is as follows:

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

It is not very convenient to use existing functions. I will recommend a user-defined function.

The Code is as follows:
Function array_sort ($ arr, $ keys, $ type = 'asc '){
$ Keysvalue = $ new_array = array ();
Foreach ($ arr as $ k =>$ v ){
$ Keysvalue [$ k] = $ v [$ keys];
}
If ($ type = 'asc '){
Asort ($ keysvalue );
} Else {
Arsort ($ keysvalue );
}
Reset ($ keysvalue );
Foreach ($ keysvalue as $ k => $ v ){
$ New_array [$ k] = $ arr [$ k];
}
Return $ new_array;
}

Test (it can sort two-dimensional arrays by specified key values, or specify the ascending or descending sort method (the default is ascending ),

Usage example:

The Code is as follows:

$ Array = array (
Array ('name' => 'phone', 'brand' => 'nokia ', 'price' => 1050 ),
Array ('name' => 'laptop ', 'brand' => 'lenovo', 'price' => 4300 ),
Array ('name' => 'shares', 'brand' => 'phillips', 'price' => 3100 ),
Array ('name' => 'treadmill ', 'brand' => 'three', 'price' => 4900 ),
Array ('name' => 'Watch ', 'brand' => 'case', 'price' => 960 ),
Array ('name' => 'LCD TV', 'brand' => 'sony ', 'price' => 6299 ),
Array ('name' => 'laser printer ', 'brand' => 'hp', 'price' => 1200)
);

$ ShoppingList = array_sort ($ array, 'price ');
Print_r ($ ShoppingList );


Bubble Method

The Code is as follows:

Function arraysort ($ data, $ order = 'asc '){
// Asc ascending desc descending
$ Temp = array ();
$ Count = count ($ data );
If ($ count <= 0)
Return false; // the input data is incorrect.
If ($ order = 'asc '){
For ($ I = 0; $ I <$ count; $ I ++ ){
For ($ j = $ count-1; $ j> $ I; $ j --){
If ($ data [$ j] <$ data [$ j-1]) {
// Exchange two data locations
$ Temp = $ data [$ j];
$ Data [$ j] = $ data [$ j-1];
$ Data [$ j-1] = $ temp;
}
}
}
} Else {
For ($ I = 0; $ I <$ count; $ I ++ ){
For ($ j = $ count-1; $ j> $ I; $ j --){
If ($ data [$ j]> $ data [$ j-1]) {
$ Temp = $ data [$ j];
$ Data [$ j] = $ data [$ j-1];
$ Data [$ j-1] = $ temp;
}
}
}
}

Return $ data;
}

$ Data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
Var_dump (arraysort ($ data); // ascending
Echo ('
');
Var_dump (arraysort ($ data, 'desc'); // descending order

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.