搜尋
首頁後端開發php教程php 二维数组排序 array_multisort

对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下:

array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数。

array1 必需。规定输入的数组。
sorting order 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。
sorting type 可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
array2 可选。规定输入的数组。
array3 可选。规定输入的数组。

参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

  • SORT_ASC - 默认,按升序排列。(A-Z)
  • SORT_DESC - 按降序排列。(Z-A)
  • 随后可以指定排序的类型:

  • SORT_REGULAR - 默认。将每一项按常规顺序排列。
  • SORT_NUMERIC - 将每一项按数字顺序排列。
  • SORT_STRING - 将每一项按字母顺序排列

  • <?php function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){ 		if(is_array($arrays)){ 			foreach ($arrays as $array){ 				if(is_array($array)){ 					$key_arrays[] = $array[$sort_key]; 				}else{ 					return false; 				} 			} 		}else{ 			return false; 		}		array_multisort($key_arrays,$sort_order,$sort_type,$arrays); 		return $arrays; 	}	$person =  array(					array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),					array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),					array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),					array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),					array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),					array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),					array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170)				);		var_dump($person);		$person = my_sort($person,'name',SORT_ASC,SORT_STRING);	var_dump($person);		$person = my_sort($person,'weight');	var_dump($person);?>

    结果如下:

    <strong>array</strong> (size=7)  0 =>     <strong>array</strong> (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  1 =>     <strong>array</strong> (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150  2 =>     <strong>array</strong> (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156  3 =>     <strong>array</strong> (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  4 =>     <strong>array</strong> (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  5 =>     <strong>array</strong> (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  6 =>     <strong>array</strong> (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170
    <strong>array</strong> (size=7)  0 =>     <strong>array</strong> (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  1 =>     <strong>array</strong> (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  2 =>     <strong>array</strong> (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156  3 =>     <strong>array</strong> (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170  4 =>     <strong>array</strong> (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  5 =>     <strong>array</strong> (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  6 =>     <strong>array</strong> (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150
    <strong>array</strong> (size=7)  0 =>     <strong>array</strong> (size=4)      'id' => int 2      'name' => string 'tom' (length=3)      'weight' => int 53      'height' => int 150  1 =>     <strong>array</strong> (size=4)      'id' => int 7      'name' => string 'jordan' (length=6)      'weight' => int 70      'height' => int 170  2 =>     <strong>array</strong> (size=4)      'id' => int 5      'name' => string 'linken' (length=6)      'weight' => int 80      'height' => int 200  3 =>     <strong>array</strong> (size=4)      'id' => int 6      'name' => string 'madana' (length=6)      'weight' => int 95      'height' => int 110  4 =>     <strong>array</strong> (size=4)      'id' => int 1      'name' => string 'fj' (length=2)      'weight' => int 100      'height' => int 180  5 =>     <strong>array</strong> (size=4)      'id' => int 4      'name' => string 'bill' (length=4)      'weight' => int 110      'height' => int 190  6 =>     <strong>array</strong> (size=4)      'id' => int 3      'name' => string 'jerry' (length=5)      'weight' => int 120      'height' => int 156

    这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序了,当然,这里的排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。


    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    使用Python实现XML数据的筛选和排序使用Python实现XML数据的筛选和排序Aug 07, 2023 pm 04:17 PM

    使用Python实现XML数据的筛选和排序引言:XML是一种常用的数据交换格式,它以标签和属性的形式存储数据。在处理XML数据时,我们经常需要对数据进行筛选和排序。Python提供了许多有用的工具和库来处理XML数据,本文将介绍如何使用Python实现XML数据的筛选和排序。读取XML文件在开始之前,我们需要先读取XML文件。Python有许多XML处理库,

    C++程序:按字母顺序重新排列单词的位置C++程序:按字母顺序重新排列单词的位置Sep 01, 2023 pm 11:37 PM

    在这个问题中,一个字符串被作为输入,我们必须按字典顺序对字符串中出现的单词进行排序。为此,我们为字符串中的每个单词(之间用空格区分)分配一个从1开始的索引,并以排序索引的形式获得输出。String={“Hello”,“World”}“Hello”=1“World”=2由于输入字符串中的单词已按字典顺序排列,因此输出将打印为“12”。让我们看看一些输入/结果场景-假设输入字符串中的所有单词都相同,让我们看看结果-Input:{“hello”,“hello”,“hello”}Result:3获得的结

    如何优化Java集合排序性能如何优化Java集合排序性能Jun 30, 2023 am 10:43 AM

    Java是一种功能强大的编程语言,广泛应用于各类软件开发中。在Java开发中,经常会涉及到对集合进行排序的场景。然而,如果不对集合排序进行性能优化,可能会导致程序的执行效率下降。本文将探讨如何优化Java集合排序的性能。一、选择合适的集合类在Java中,有多种集合类可以用来进行排序,如ArrayList、LinkedList、TreeSet等。不同的集合类在

    Java开发中如何优化集合排序去重性能Java开发中如何优化集合排序去重性能Jul 02, 2023 am 11:25 AM

    Java开发中,集合排序和去重是常见的需求。然而,在处理大数据集合时,性能往往会成为一个问题。本文将介绍一些优化技巧,帮助提升集合排序和去重的性能。一、使用合适的数据结构在Java中,最常用的数据结构是ArrayList和HashSet。ArrayList适用于需要保持元素顺序的情况,而HashSet则适用于需要去重的情况。在排序和去重的场景中,我们可以使用

    如何利用vue和Element-plus实现数据的分组和排序如何利用vue和Element-plus实现数据的分组和排序Jul 18, 2023 am 10:39 AM

    如何利用Vue和ElementPlus实现数据的分组和排序Vue是一种流行的JavaScript框架,它可以帮助我们构建前端应用程序。ElementPlus是基于Vue的桌面端组件库,它提供了丰富的UI组件,使我们能够轻松地构建出漂亮且用户友好的界面。在本文中,我们将探讨如何利用Vue和ElementPlus来实现数据的分组和排序。首先,我们需要准备一

    Java实现的常见排序算法详解Java实现的常见排序算法详解Jun 18, 2023 am 10:48 AM

    排序算法是计算机科学中的一个重要概念,是许多应用程序的核心部分。在日常生活和工作中,我们经常需要对数据进行排序,例如排列名单、对数值进行排序等。Java作为一种广泛使用的编程语言,提供了许多内置的排序算法。本文将详细介绍Java中实现的常见排序算法。1.冒泡排序(BubbleSort)冒泡排序是最简单但最慢的排序算法之一。它遍历整个数组,比较相邻的元素并一

    PHP usort() 函数使用指南:排序数组PHP usort() 函数使用指南:排序数组Jun 27, 2023 pm 02:27 PM

    PHPusort()函数使用指南:排序数组在PHP编程中,我们经常需要对数组进行排序。PHP提供了很多函数用于数组的排序,其中usort()函数可以灵活的对数组进行自定义排序。本文将介绍usort()函数的使用方法和注意事项,并通过实例演示如何使用usort()函数对数组进行排序。一、usort()函数简介PHPusort()函数

    如何在Java 14中使用Records类来实现自动比较和排序如何在Java 14中使用Records类来实现自动比较和排序Jul 30, 2023 pm 01:06 PM

    如何在Java14中使用Records类来实现自动比较和排序Java14引入了一种新的类称为Records类,它为我们提供了一种简洁而强大的方式来定义不可变的数据类。Records类具有自动为每个字段生成getter方法、equals()方法和hashCode()方法的特性,这使得比较和排序非常方便。在这篇文章中,我们将通过示例代码来演示如何在Java

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    2 週前By尊渡假赌尊渡假赌尊渡假赌
    倉庫:如何復興隊友
    4 週前By尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒險:如何獲得巨型種子
    4 週前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SecLists

    SecLists

    SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

    EditPlus 中文破解版

    EditPlus 中文破解版

    體積小,語法高亮,不支援程式碼提示功能

    mPDF

    mPDF

    mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),