Home  >  Article  >  Backend Development  >  3 ways to sort two-dimensional arrays in PHP and share custom functions_PHP tutorial

3 ways to sort two-dimensional arrays in PHP and share custom functions_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:34:32903browse

Regarding sorting, generally we sort through the database or nosql (eg: redis) and then output it to the program for direct use. However, sometimes we need to sort the array directly through PHP and store the data in PHP. The most used ones are objects and arrays, but the ones that are processed the most are arrays, because there are very rich built-in function libraries (in fact, objects can also be understood as arrays to a certain extent). These function libraries can largely help us achieve certain features. Commonly used system functions include sort, asort, arsort, ksort, krsort, etc. Here I mainly talk about the two methods of sorting two-dimensional arrays:

1. Use PHP’s own array_multisort function to sort

Copy the code The code is as follows:

$data = array();
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array ('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data [] = array('volume' => 67, 'edition' => 7);

// Get the list of columns
foreach ($data as $key => $row)
{
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

print_r($data);
?>

Output result:

Copy code The code is as follows:
Array
(
[0] => Array
(
                                                                          ( t; 86
 [ edition] => 1
)
[2] => Array
(
[volume] => 86
[edition] => 6
)
[3] => Array
(
[volume] => 85
[edition] => 6
)
[4] => Array
(
[volume] => 67
[edition] => 2
)
[5] => Array
(
[vol ume] => 67
                                                                                                                                                                           
The official document about array_multisort also has a more detailed description: http://www.php.net/manual/zh/function.array-multisort.php


2. Custom function sorting 1


Copy code

The code is as follows:


    $data = array();
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);

    // 取得列的列表
    foreach ($data as $key => $row)
    {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }

    $ret = arraySort($data, 'volume', 'desc');

    print_r($ret);

    /**
* @desc arraySort php two-dimensional array sorting sorts the array according to the specified key
* @param array $arr The array to be sorted
* @param string $keys Specifies the sorting key
* @param string $type Sorting type asc | desc
* @return array
*/
    function arraySort($arr, $keys, $type = 'asc') {
        $keysvalue = $new_array = array();
        foreach ($arr as $k => $v){
            $keysvalue[$k] = $v[$keys];
        }
        $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
        reset($keysvalue);
        foreach ($keysvalue as $k => $v) {
           $new_array[$k] = $arr[$k];
        }
        return $new_array;
    }
?>


输出结果:
复制代码 代码如下:
Array
(
    [3] => Array
        (
            [volume] => 98
            [edition] => 2
        )

    [4] => Array
        (
            [volume] => 86
            [edition] => 6
        )

    [1] => Array
        (
            [volume] => 86
            [edition] => 1
        )

    [2] => Array
        (
            [volume] => 85
            [edition] => 6
        )

    [5] => Array
        (
            [volume] => 67
            [edition] => 7
        )

    [0] => Array
        (
            [volume] => 67
            [edition] => 2
        )

)

One difference between this custom function and the system function is that the custom function only supports sorting for a certain key. If you want to support sorting for multiple keys, you need to execute it multiple times; while the system function array_multisort can sort multiple keys at once. key and can specify multiple sorting rules. The system function is quite powerful. It is recommended to use the system function. After all, it is implemented at the bottom of C. Here is just an example to illustrate how to sort the array through a custom function. Of course, this custom function can also be used. Continue to expand to support more collations. It is still used a lot in scenarios such as rankings, leaderboards, and results.

3. Custom function sorting 2

The following function sorts a given two-dimensional array according to the specified key value. Let’s look at the function definition first:

Copy the code 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;
}

It can sort the two-dimensional array according to the specified key value, or you can specify Ascending or descending sorting method (default is ascending order), usage example:
Copy code The code is as follows:

$array = array (
array('name'=>'Mobile phone','brand'=>'Nokia','price'=>1050),
array('name'=>'Laptop' ,'brand'=>'lenovo','price'=>4300),
array('name'=>'razor','brand'=>'Philips','price' =>3100),
array('name'=>'Treadmill','brand'=>'Sanwa Soushi','price'=>4900),
array('name '=>'Watch','brand'=>'Casio','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);


The above is the two-dimensional array $array according to 'price' from low to High sort.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/751507.htmlTechArticle Regarding sorting, generally we sort it through the database or nosql (eg: redis) and then output it to the program. Use it directly, but sometimes we need to sort the array directly through PHP...
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