PHP中有哪些數(shù)組排序方法?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)主營廣水網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),廣水h5小程序開發(fā)搭建,廣水網(wǎng)站營銷推廣歡迎廣水等地區(qū)企業(yè)咨詢一、數(shù)組操作的基本函數(shù)
數(shù)組的鍵名和值
array_values($arr); 獲得數(shù)組的值
array_keys($arr); 獲得數(shù)組的鍵名
array_flip($arr); 數(shù)組中的值與鍵名互換(如果有重復(fù)前面的會被后面的覆蓋)
in_array("apple",$arr); 在數(shù)組中檢索apple
array_search("apple",$arr); 在數(shù)組中檢索apple ,如果存在返回鍵名
array_key_exists("apple",$arr); 檢索給定的鍵名是否存在數(shù)組中
isset($arr[apple]): 檢索給定的鍵名是否存在數(shù)組中
數(shù)組的內(nèi)部指針
current($arr); 返回?cái)?shù)組中的當(dāng)前單元
pos($arr); 返回?cái)?shù)組中的當(dāng)前單元
key($arr); 返回?cái)?shù)組中當(dāng)前單元的鍵名
prev($arr); 將數(shù)組中的內(nèi)部指針倒回一位
next($arr); 將數(shù)組中的內(nèi)部指針向前移動一位
end($arr); 將數(shù)組中的內(nèi)部指針指向最后一個(gè)單元
reset($arr; 將數(shù)組中的內(nèi)部指針指向第一個(gè)單元
each($arr); 將返回?cái)?shù)組當(dāng)前元素的一個(gè)鍵名/值的構(gòu)造數(shù)組,并使數(shù)組指針向前移動一位
list($key,$value)=each($arr); 獲得數(shù)組當(dāng)前元素的鍵名和值
數(shù)組和變量之間的轉(zhuǎn)換
extract($arr);用于把數(shù)組中的元素轉(zhuǎn)換成變量導(dǎo)入到當(dāng)前文件中,鍵名當(dāng)作變量名,值作為變量值
注:(第二個(gè)參數(shù)很重要,可以看手冊使用)使用方法 echo $a;
compact(var1,var2,var3);用給定的變量名創(chuàng)建一個(gè)數(shù)組
二、數(shù)組的分段和填充
數(shù)組的分段
array_slice($arr,0,3); 可以將數(shù)組中的一段取出,此函數(shù)忽略鍵名
array_splice($arr,0,3,array("black","maroon")); 可以將數(shù)組中的一段取出,與上個(gè)函數(shù)不同在于返回的序列從原數(shù)組中刪除
分割多個(gè)數(shù)組
array_chunk($arr,3,TRUE); 可以將一個(gè)數(shù)組分割成多個(gè),TRUE為保留原數(shù)組的鍵名
數(shù)組的填充
array_pad($arr,5,'x'); 將一個(gè)數(shù)組填補(bǔ)到制定長度
三、數(shù)組與棧
array_push($arr,"apple","pear"); 將一個(gè)或多個(gè)元素壓入數(shù)組棧的末尾(入棧),返回入棧元素的個(gè)數(shù)
array_pop($arr); 將數(shù)組棧的最后一個(gè)元素彈出(出棧)
四、數(shù)組與列隊(duì)
array_shift($arr);數(shù)組中的第一個(gè)元素移出并作為結(jié)果返回(數(shù)組長度減1,其他元素向前移動一位,數(shù)字鍵名改為從零技術(shù),文字鍵名不變)
array_unshift($arr,"a",array(1,2));在數(shù)組的開頭插入一個(gè)或多個(gè)元素
五、回調(diào)函數(shù)
array_walk($arr,'function','words'); 使用用戶函數(shù)對數(shù)組中的每個(gè)成員進(jìn)行處理(第三個(gè)參數(shù)傳遞給回調(diào)函數(shù)function)
array_mpa("function",$arr1,$arr2); 可以處理多個(gè)數(shù)組(當(dāng)使用兩個(gè)或更多數(shù)組時(shí),他們的長度應(yīng)該相同)
array_filter($arr,"function"); 使用回調(diào)函數(shù)過濾數(shù)組中的每個(gè)元素,如果回調(diào)函數(shù)為TRUE,數(shù)組的當(dāng)前元素會被包含在返回的結(jié)果數(shù)組中,數(shù)組的鍵名保留不變
array_reduce($arr,"function","*"); 轉(zhuǎn)化為單值函數(shù)(*為數(shù)組的第一個(gè)值)
六、數(shù)組的排序
通過元素值對數(shù)組排序
sort($arr); 由小到大的順序排序(第二個(gè)參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
rsort($arr); 由大到小的順序排序(第二個(gè)參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
usort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個(gè)參數(shù),0表示相等,正數(shù)表示第一個(gè)大于第二個(gè),負(fù)數(shù)表示第一個(gè)小于第二個(gè))忽略鍵名的數(shù)組排序
asort($arr); 由小到大的順序排序(第二個(gè)參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
arsort($arr); 由大到小的順序排序(第二個(gè)參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
uasort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個(gè)參數(shù),0表示相等,正數(shù)表示第一個(gè)大于第二個(gè),負(fù)數(shù)表示第一個(gè)小于第二個(gè))保留鍵名的數(shù)組排序
通過鍵名對數(shù)組排序
ksort($arr); 按照鍵名正序排序
krsort($arr); 按照鍵名逆序排序
uksort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的鍵名進(jìn)行排序(function中有兩個(gè)參數(shù),0表示相等,正數(shù)表示第一個(gè)大于第二個(gè),負(fù)數(shù)表示第一個(gè)小于第二個(gè))
自然排序法排序
natsort($arr); 自然排序(忽略鍵名)
natcasesort($arr); 自然排序(忽略大小寫,忽略鍵名)
七、數(shù)組的計(jì)算
數(shù)組元素的求和
array_sum($arr); 對數(shù)組內(nèi)部的所有元素做求和運(yùn)算
數(shù)組的合并
array_merge($arr1,$arr2); 合并兩個(gè)或多個(gè)數(shù)組(相同的字符串鍵名,后面的覆蓋前面的,相同的數(shù)字鍵名,后面的不會做覆蓋操作,而是附加到后面)
“+”$arr1+$arr2; 對于相同的鍵名只保留后一個(gè)
array_merge_recursive($arr1,$arr2); 遞歸合并操作,如果數(shù)組中有相同的字符串鍵名,這些值將被合并到一個(gè)數(shù)組中去。如果一個(gè)值本身是一個(gè)數(shù)組,將按照相應(yīng)的鍵名把它合并為另一個(gè)數(shù)組。當(dāng)數(shù)組 具有相同的數(shù)組鍵名時(shí),后一個(gè)值將不會覆蓋原來的值,而是附加到后面
數(shù)組的差集
array_diff($arr1,$arr2); 返回差集結(jié)果數(shù)組
array_diff_assoc($arr1,$arr2,$arr3); 返回差集結(jié)果數(shù)組,鍵名也做比較
數(shù)組的交集
array_intersect($arr1,$arr2); 返回交集結(jié)果數(shù)組
array_intersect_assoc($arr1,$arr2); 返回交集結(jié)果數(shù)組,鍵名也做比較
八、其他的數(shù)組函數(shù)
range(0,12); 創(chuàng)建一個(gè)包含指定范圍單元的數(shù)組
array_unique($arr); 移除數(shù)組中重復(fù)的值,新的數(shù)組中會保留原始的鍵名
array_reverse($arr,TRUE); 返回一個(gè)單元順序與原數(shù)組相反的數(shù)組,如果第二個(gè)參數(shù)為TRUE保留原來的鍵名
//srand((float)microtime()*10000000); 隨機(jī)種子觸發(fā)器
array_rand($arr,2); 從數(shù)組中隨機(jī)取出一個(gè)或 多個(gè)元素
shuffle($arr); 將數(shù)組的順序打亂
分類: 整理分享給大家供大家參考,具體如下:
sort()
函數(shù)和rsort()
函數(shù):bool sort(array &array [,int sort_flags]
bool rsort(array &array [.int_sort_flags]
參數(shù):第一個(gè)參數(shù)是排序數(shù)組對象
第二個(gè)參數(shù)是可以選的 可選值:
SORT_REGULAR:是默認(rèn)值,將自動識別數(shù)組的元素類型進(jìn)行排序
SORT_NUMERIC:用于數(shù)組元素排序
SORT_STRING:用于字符串排序
SORT_LOCALE_STRING:根據(jù)當(dāng)前的locale設(shè)置來把元素當(dāng)作字符串比較
示例:
$a=array(4,7,9,1); sort($a); pirnt_r($a); rsort($a); print_r($a);
ksort()
函數(shù)按照鍵名對數(shù)組進(jìn)行有小到大的排序。krsort()
與ksort()
函數(shù)相反,排序后為數(shù)組值保持原來的鍵。
示例:
$data= array(5=>"five",8=>"eight",1=>"one",7=>"seven"); ksrot($data); print_r($data); krsot($data); print_r($data);
asort()
從小到大arsort()
從大到小,用這個(gè)函數(shù)排序,原始鍵名將被忽略,使用依次數(shù)字重新索引數(shù)組下標(biāo)
$data=array("a"=>1,"b"=>2,"c"=>3); asort($data); print_r($data); arsort($data); print_r($data);
是個(gè)非常特殊的排序方式,這種方式使用認(rèn)知而不是使用計(jì)算規(guī)則,這種特性稱為——自然排序法,即數(shù)字從1到9,字母從a-z,短者優(yōu)先。
示例:
$data=array("file1.txt","file11.txt","file111.txt"); natsort($data);//普通自然排序 natcasesort($data);//忽略大小寫
bool usort(array &array ,callback cmp_function) bool uasort(array &array,callback cmp_function) bool uksort(array &array,callback cmp_function)
自定義回調(diào)函數(shù),需要兩個(gè)參數(shù),分別是數(shù)組兩個(gè)連續(xù)元素,比較第一個(gè)參數(shù)小于,大于,等于第二個(gè)參數(shù)是分別返回 0,1,-1
$data= array("ab","abc","a","ac","abcd"); usrot($data,"mysortByLen"); function mysortByLen($one,$two){ if(strlen($one)== strlen($two)){ return 0; }else{ return (strlen($one)>strlen($two))?1:-1; }
array_multisort()
函數(shù)對多個(gè)數(shù)組排序,或者根據(jù)某一維或多維對多維數(shù)組排序。
bool array_multisort(array array1 [,mixed arg,[,array ....]])
示例:
$data=array( array("id"=>1,"name"=>4), array("id"=>1,"name"=>2), array("id"=>2,"name"=>3) ); foreach($data as $key=>$value){ $ids[$key]=$value["id"]; $names[$key]=$value["name"] } array_multisort($data,$ids,$names); print_r($data);
輸出如下:
array(
array("id"=>1,"name"=>2),
array("id"=>1,"name"=>4),
array("id"=>2,"name"=>3)
);
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
網(wǎng)站欄目:PHP中有哪些數(shù)組排序方法-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://muchs.cn/article40/phgho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、Google、響應(yīng)式網(wǎng)站、虛擬主機(jī)、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容