首頁  >  文章  >  後端開發  >  怎樣解決PHP中陣列的排序與打亂問題?

怎樣解決PHP中陣列的排序與打亂問題?

WBOY
WBOY原創
2021-11-08 17:54:054839瀏覽

在之前的文章《怎樣取得數組中的鍵名?怎樣轉換鍵名的大小寫? 》中詳細的介紹了PHP中鍵名操作的獲取鍵名與轉換鍵名大小寫的相關操作,本篇文章我們一起來看一下PHP中怎樣對多個數組進行排序,希望對大家有幫助!

怎樣解決PHP中陣列的排序與打亂問題?

在上一篇文章中我們了解了想要取得數組中所有的元素名稱需要透過array_keys函數來實現,想要轉換數組鍵名的大小寫需要透過array_change_key_case函數來進行操作。這都是屬於數組運算的一部分,我們之前在《怎麼去給PHP數組進行排序(圖文詳解)》中簡單的介紹了一些。

在PHP中怎樣才能對多個陣列進行排序?有怎樣隨機的對數組進行隨機排序呢?在PHP中有內建的array_multisort函數與shuffle函數能夠對陣列進行升序排列和隨機排序,下面我們一起來看看吧。

<strong><span style="font-size: 20px;">array_multisort</span></strong>#函數-對多個陣列進行排序

在PHP中array_multisort函數能夠輸入一個或多個數組,函數會先給第一個數組排序,然後接著對下一組進行排序。 array_multisort函數的基本語法格式如下:

array_multisort(array1,sorting order,sorting type,array2,array3...)

其中需要注意的是:

參數array1是必須要有的,是要進行排序的數組,參數array2、3是可選的,也是要進行排序的陣列。參數sorting order也是一個可選的參數,在預設的情況下參數表示的是SORT_ASC,表示的是數組排序是升序,當單數sorting order為SORT_DESC的時候,表示的是依降序排列。

參數sorting type也是一個可選參數,預設的值為SORT_REGULAR表示的是,陣列排序依照常規順序排列。當參數的值為SORT_NUMERIC 的時候表示的是將陣列中的元素當作數字來處理。當參數的值為SORT_STRING表示的是將陣列中的元素當作字串來處理。當參數的值為SORT_LOCALE_STRING表示的是一顆透過setlocale函數來進行更改的作為字串處理。當參數的值為SORT_NATURAL表示的是類似 natsort() 的自然排序。

使用array_multisort函數對字串進行排序,鍵名為字串的元素,鍵名會保留,但是鍵名為數字的會被重新索引。這個索引規則還是一樣的。

如果排序成功的話,回傳的結果是true;如果排序失敗,回傳的結果是false

下面我們透過範例來看一下array_multisort函數的基本用法,範例如下:

<?php
$a1=array("Dog","Cat");
$a2=array("Fw","Marry");
array_multisort($a1,$a2);
print_r($a1);
echo &#39;<br/>&#39;;
print_r($a2);
?>

輸出結果:

怎樣解決PHP中陣列的排序與打亂問題?

在上述範例中,傳回的結果是進行了升序的排序,下面我們來看一下,當兩個值相同的時候,輸出結果會有什麼變化,範例如下:

<?php
$a1=array("Dog","Dog","Cat");
$a2=array("Pluto","Fw","Marry");
array_multisort($a1,$a2);
print_r($a1);
echo &#39;<br/>&#39;;
print_r($a2);
?>

輸出結果:

怎樣解決PHP中陣列的排序與打亂問題?

上述範例中,當陣列中的兩個元素都相同的時候,並不會被覆寫,而是鍵名不同重新排序。

下面我們在來看一個綜合的實例,當我們合併兩個數組並且按照降序進行排列,輸出結果會發生什麼變化,示例如下:

<?php
$a1=array(1,30,15,7,25);
$a2=array(4,30,20,41,66);
$num=array_merge($a1,$a2);
array_multisort($num,SORT_DESC,SORT_NUMERIC);
print_r($num);
?>

輸出結果:

怎樣解決PHP中陣列的排序與打亂問題?

上述中我們透過array_multisort函數能夠對陣列元素進行排序,下面我們來介紹shuffle函數。它能夠將數組打亂。

<strong><span style="font-size: 20px;">shuffle</span></strong>#函數-重新排序陣列

##在PHP中既然有函數能夠將數組元素進行有序的排序,那同樣的也有辦法能夠將數組進行重新排序,也就是將數組打亂。

shuffle函數的基本語法結構如下:

shuffle(array)

其中參數array就是需要重新排序的數組,

shuffle() 函數把數組中的元素按隨機順序重新排列。數組中原來的鍵名會被刪除,新的陣列會有新的鍵名。

函数如果排序成功,返回的结果是true,如果失败,返回的结果是flase

下面我们通过示例来看一下shuffle函数的使用,示例如下:

<?php
$my_array = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"purple");
shuffle($my_array);
print_r($my_array);
?>

输出结果:

怎樣解決PHP中陣列的排序與打亂問題?

怎樣解決PHP中陣列的排序與打亂問題?

上述示例中,通过shuffle函数将数组进行重新排列,并且每执行一次数组的排列顺序就会改变。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上是怎樣解決PHP中陣列的排序與打亂問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn