摘要:下列的所有排序函數都是直接作用于數組本身,而不是返回一個新的有序的數組。倒序并保持索引關系,按鍵名排序按鍵名倒序使用用戶自定義的比較函數對數組中的值進行排序,要排序的數組需要用一種不尋常的標準進行排序,那么應該使用此函數。
數組排序,共13個
函數中有u的,能自定義比較函數;有k的,按照鍵來排序;有r(reverse)的,倒序;有a(association)的,一定是鍵值關聯,除了rsort() usort() sort() shuffle(),其他沒有a的都是鍵值關聯,array_multisort()鍵值關聯的保持,數字類型的不保持。
下列的所有排序函數都是直接作用于數組本身, 而不是返回一個新的有序的數組。
以下函數對于數組中相等的元素,它們在排序后的順序是未定義的。 (也即相等元素之間的順序是不穩定的,即具有相同值的元素每次排序的結果都是不確定(關聯數組))。php7asort arsort uasort已實現穩定排序,php5穩定排序:http://php.net/manual/zh/func...
在對含有混合類型值的數組排序時要小心,因為 sort() 可能會產生不可預知的結果。
1.array_multisort可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。
bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )
排序類型標志:
SORT_REGULAR (默認)- 將項目按照通常方法比較(不修改類型,區分大小寫,大寫字母會排在小寫字母之前)
SORT_NUMERIC - 按照數字大小比較
SORT_STRING - 按照字符串比較(區分大小寫)
SORT_LOCALE_STRING - 根據當前的本地化設置,按照字符串比較。 它會使用 locale 信息,可以通過 setlocale() 修改此信息。
SORT_NATURAL - 以字符串的"自然排序",類似 natsort()
SORT_FLAG_CASE - 可以組合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小寫不敏感的方式排序字符串。
1.1 如果有多個數組參數時, $array2會根據$array1的結果排序,像MySQL的group by
1.2 不區分大小寫的排序:
$array = array("Alpha", "atomic", "Beta", "bank"); $array_lowercase = array_map("strtolower", $array); // 先復制一個轉為小寫數組 array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array); // 先對小寫數組排序,再排序原數組 print_r($array);
1.3 對數據庫結果進行排序
function array_orderby() { $args = func_get_args(); $data = array_shift($args); foreach ($args as $n => $field) { if (is_string($field)) { $tmp = array(); foreach ($data as $key => $row) $tmp[$key] = $row[$field]; $args[$n] = $tmp; } } $args[] = &$data; call_user_func_array("array_multisort", $args); return array_pop($args); }2.sort
刪除原有的鍵名對數組排序(順序)
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);排序結果和natcasesort()一樣。
3.rsort對數組逆向排序
bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )4.asort
保持鍵值關聯(association)。主要用于對那些單元順序很重要的結合數組進行排序。
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )5.arsort
倒序并保持索引關系(association,reverse)
bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )6.ksort
按鍵名排序
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )7.krsort
按鍵名倒序
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )8.usort
使用用戶自定義的比較函數對數組中的值進行排序,要排序的數組需要用一種不尋常的標準進行排序,那么應該使用此函數。
bool usort ( array &$array , callable $value_compare_func )
$value_compare_func( mixed $a, mixed $b ) 在$a小于,等于或大于$b時,該比較函數必須相應地返回一個小于,等于或大于 0 的整數。
usort($a, array("TestObj", "cmp_obj"))對象屬性排序
在類中調用:uasort($array, array($this,"value_compare_func"))
9.uasort使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯
bool uasort ( array &$array , callable $value_compare_func )10.uksort
使用用戶自定義的比較函數對數組中的鍵名進行排序
bool uksort ( array &$array , callable $key_compare_func )11.natcasesort
不區分大小寫字母的自然排序(排完字母再排數字),保持鍵值關聯
bool natcasesort ( array &$array )12.natsort
用“自然排序”算法對數組排序,保持鍵值關聯
bool natsort ( array &$array )13.shuffle
本函數打亂(隨機排列單元的順序)一個數組。鍵值不關聯
bool shuffle ( array &$array )
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/29101.html
摘要:額外的數組元素可以象下面這樣追加如果你正在處理數字索引數組,你可能想使用顯示命名的函數前置和追加元素,如和函數,但這些函數不能操作關聯數組。 在使用 PHP 進行開發的過程中,或早或晚,您會需要創建許多相似的變量,這時候你可以把數據作為元素存儲在數組中。數組中的元素都有自己的 ID,因此可以方便地訪問它們。 關聯數組 關聯數組,它的每個 ID 鍵都關聯一個值。在存儲有關具體命名的值的數...
摘要:在算法中,比快速排序還快的,無疑是基數排序,粗略看了一下算法,可能是基礎排序中的桶排序。桶排序是穩定的桶排序是常見排序里最快的一種,比快排還要快大多數情況下桶排序非常快,但是同時也非常耗空間以空間換時間 ext/standard/php_array.h https://github.com/php/php-src/blob/master/ext/standard/php_array....
摘要:良好的排序算法具有進行最少的比較和交換的特征。冒泡排序是一個基于比較的排序算法,被認為是效率最低的排序算法之一。現在讓我們使用實現冒泡排序算法。插入排序到目前為止,我們已經看到了兩種基于比較的排序算法。 預警 本文適合對于排序算法不太了解的新手同學觀看,大佬直接忽略即可。因為考慮到連貫性,所以篇幅較長。老鐵們看完需要大概一個小時,但是從入門到完全理解可能需要10個小時(哈哈哈,以我自己...
摘要:前提給定一個二維數組,請根據指定的數組寫出最優的排序。排序條件,指定數組如下估計大家都沒有什么問題,排序嘛,簡單的不要不要的方式一這應該是最簡單的方式了,直接使用現成的函數,快捷的不要不要的。 前提 給定一個二維數組,請根據指定的數組key,寫出最優的排序。排序條件age asc,sex desc,指定數組如下: $arr = [ [id=>1, age=>1,...
摘要:像其他變量一樣,使用運算符可以改變數組元素的內容。數組的基本操作定義數組在中聲明數組的方式主要有兩種用函數聲明數組,直接為數組元素賦值。 概述要訪問一個變量的內容,可以直接使用其名稱。如果該變量是一個數組,可以使用變量名稱和關鍵字或索引的組合來訪問其內容。 像其他變量一樣,使用運算符=可以改變數組元素的內容。數組單元可以通過 array[key] 語法來訪問。showImg(https...
閱讀 710·2021-09-29 09:34
閱讀 2561·2019-08-30 15:53
閱讀 3368·2019-08-29 17:17
閱讀 766·2019-08-29 16:08
閱讀 1129·2019-08-29 13:03
閱讀 955·2019-08-27 10:54
閱讀 693·2019-08-26 13:39
閱讀 2863·2019-08-26 13:34