Table of Contents
Detailed explanation of two-dimensional array sorting problem in PHP, two-dimensional array sorting
Home Backend Development PHP Tutorial Detailed explanation of two-dimensional array sorting problem in PHP, two-dimensional array sorting_PHP tutorial

Detailed explanation of two-dimensional array sorting problem in PHP, two-dimensional array sorting_PHP tutorial

Jul 13, 2016 am 09:44 AM
php Two-dimensional array sort

Detailed explanation of two-dimensional array sorting problem in PHP, two-dimensional array sorting

Two-dimensional array sorting in PHP, you can use PHP built-in function uasort()

Example 1:

Use user-defined comparison function to sort values ​​in array and maintain index association

The callback function is as follows: Note that when the return value of the callback function is a negative number or false, it means that the first parameter of the callback function comes first and the second parameter is arranged last

$person = array(
  array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21),
  array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23),
  array('num'=>'003','id'=>1,'name'=>'bhangsan','age'=>23),
  array('num'=>'001','id'=>3,'name'=>'dhangsan','age'=>23),
);
//负数或者false表示第一个参数应该在前
function sort_by_name($x,$y){
  return strcasecmp($x['name'],$y['name']);
}
Copy after login

Use as follows:

uasort($person,'sort_by_name');
Copy after login

The following is a two-dimensional array sorting method for reference and interview use:

//$array 要排序的数组
//$row  排序依据列
//$type 排序类型[asc or desc]
//return 排好序的数组
function array_sort($array,$row,$type){
  $array_temp = array();
  foreach($array as $v){
    $array_temp[$v[$row]] = $v;
  }
  if($type == 'asc'){
    ksort($array_temp);
  }elseif($type='desc'){
    krsort($array_temp);
  }else{
  }
  return $array_temp;
}
Copy after login

Example 2:

One-dimensional array sorting can be sorted by process using asort, ksort and other methods, which is relatively simple. How to implement sorting of two-dimensional arrays? This can be achieved using array_multisort and usort

For example, an array like the following:

The code is as follows:

$users = array(
  array('name' => 'tom', 'age' => 20)
  , array('name' => 'anny', 'age' => 18)
  , array('name' => 'jack', 'age' => 22)
);
Copy after login

I hope I can sort them by age from small to large. The author has sorted out two methods and shared them with everyone.

1. Use array_multisort

Using this method, it will be more troublesome. You need to extract the age and store it in a one-dimensional array, and then arrange it in ascending order by age. The specific code is as follows:

The code is as follows:

$ages = array();
foreach ($users as $user) {
  $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
Copy after login

After execution, $users is a sorted array, which can be printed out to see. If you need to sort by age in ascending order first, and then by name in ascending order, the method is the same as above, that is, extract an additional name array. The final sorting method is called like this:

The code is as follows:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
Copy after login

2. Use usort

The biggest advantage of using this method is that you can customize some more complex sorting methods. For example, sort in descending order by name length:

The code is as follows:

usort($users, function($a, $b) {
      $al = strlen($a['name']);
      $bl = strlen($b['name']);
      if ($al == $bl)
        return 0;
      return ($al > $bl) ? -1 : 1;
    });
Copy after login

Anonymous functions are used here and can be extracted separately if necessary. Among them, $a and $b can be understood as elements under the $users array. You can directly index the name value, calculate the length, and then compare the lengths.

================================================== ======================

Here are some functions of PHP sorting by the way

sort sorts an array generally applies to one-dimensional indexed arrays and does not maintain indexes

rsort sorts the array in reverse order The usage is the same as sort

asort sorts the array and keeps the index relationship to sort the values. It is generally suitable for one-dimensional arrays and keeps the index relationship

arsort sorts the array in reverse order and maintains the index relationshipThe usage is consistent with asort

ksort sorts the array by key name

krsort sorts the array in reverse order by key name

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1049118.htmlTechArticleDetailed explanation of two-dimensional array sorting problem in PHP, two-dimensional array sorting Two-dimensional array sorting in PHP, you can use PHP Built-in function uasort() Example 1: Using user-defined comparison function logarithm...
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)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Two Point Museum: All Exhibits And Where To Find Them
1 months 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)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

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.

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 Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

In this chapter, we are going to learn the following topics related to routing ?

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 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.

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

See all articles