对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 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
随后可以指定排序的类型:
<?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开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

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

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

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

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