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