PHP中陣列元素公升序 降序及重新排序的函式

2021-04-17 08:38:33 字數 3239 閱讀 2847

在php陣列學習摘錄部分了解到最基本的php陣列的建立和陣列元素的顯示。需要深入學習下php陣列的相關操作。首先接觸的就是陣列元素的公升序、降序的排序問題。

1、快速建立陣列的函式range()

比如range()函式可以快速建立從1到9的數字陣列:

<?php

$numbers=range(1,9);

echo$numbers[1];

?>

當然,使用range(9,1)則建立了9到1的數字陣列。同時,range()還可以建立從a到z的字元陣列:

<?php

$numbers=range(a,z);

foreach($numbersas$mychrs)

echo$mychrs."";

?>

使用字元陣列時注意大小寫,比如range(a,z)和range(a,z)是不一樣的。

range()函式還具有第三個引數,該引數的作用是設定步長,比如range(1,9,3)建立的陣列元素是:1、4、7

2、php中常規陣列的排序

一般陣列中的各元素均以字元或數字表現的,所以可對陣列元素進行公升序排列,該功能函式為sort()。比如:

<?php

$people=array('name','***','nation','birth');

foreach($peopleas$mychrs)

echo$mychrs."";

sort($people);

echo"

---排序後---

";foreach($peopleas$mychrs)

echo$mychrs."";

?>

公升序排序後的陣列元素顯示為birthnamenation***,當然,sort()函式是區分字母大小寫的(字母從大到小的順序是:a…z…a…z)

sort()函式還具有第二引數,用來說明公升序的規則是用來比較數字還是字串的。比如:

<?php

echo"---按數字公升序排序---

";$num2=array('26','3',);

sort($num2,sort_numeric);

foreach($num2as$mychrs)

echo$mychrs."";

echo"

---按字元公升序排序---

";$num3=array('26','3');

sort($num3,sort_string);

foreach($num3as$mychrs)

echo$mychrs."";

?>

sort_numeric和sort_string用來宣告按數字或字元的公升序排列。如果按照數字公升序排列是:3,26;但如果按照字元公升序排列則是:26,3了。

php中除了公升序函式以外,還有降序或稱反向排列的函式,就是rsort()函式,比如:

$num1=range(1,9);

rsort($num1);

這裡其實就相當於range(9,1)

3、php中關聯陣列的排序

php除了支援數字索引陣列以外,還支援相關陣列。比如如下陣列就是乙個相關(關聯)陣列:

$peoples=array('xm'=>'name','xb'=>'***','mz'=>'nation','cs'=>'birth');

使用sort($peoples)預設即是按照元素定義值的公升序排序,在關聯陣列中可使用asort()函式表示,關聯陣列中最主要的則是可按照關鍵字(如xm、xb、mz等)的公升序排序,該方法是用函式ksort()函式。

<?php

$peoples=array('xm'=>'name','xb'=>'***','mz'=>'nation','cs'=>'birth');

foreach($peoplesas$mychrs)

echo$mychrs."";

echo"

--按元素值公升序排列--

";asort($peoples);

foreach($peoplesas$mychrs)

echo$mychrs."";

echo"

--按關鍵字公升序排列--

";ksort($peoples);

foreach($peoplesas$mychrs)

echo$mychrs."";

?>

和常規陣列擁有sort()公升序函式的反向排序rsort()降序

函式相對應的,關聯陣列也有對應的降序

函式:asort()函式和arsort()函式、ksort()函式和krsort()函式。

記憶:原型函式是sort(),其中a、k表示關聯陣列相關必須前置,反向排序使用r修飾。

4、php陣列元素隨機排序

php中使用shuffle()函式將陣列元素進行隨機的重新排序,比如:

<?php

$fer=array('cnbruce','cnrose','cnjames','cnanne');

shuffle($fer);

foreach($feras$mychrs)

echo$mychrs."";

?>

每次都會顯示不同的排序組合

5、php陣列按原順序反向排序

php中可使用array_reverse()函式將陣列元素按原順序反向排序。比如:

<?php

$fer=array('cnbruce','cnrose','cnjames','cnanne');

foreach($feras$mychrs)

echo$mychrs."";

$fer=array_reverse($fer);

echo"

--按原順序反向--

";foreach($feras$mychrs)

echo$mychrs."";

?>

cnbrucecnrosecnjamescnanne

--按原順序反向--

cnannecnjamescnrosecnbruce

注意這裡的$fer=array_reverse($fer);在此之前的任何排序函式均只是宣告引用,並沒有對原有陣列進行重新定義,但當我除錯該函式時則需要重新定義。這是因為array_reverse()是返回原陣列修改後的副本,如果不需要原有陣列,可對原陣列重新定義達到覆蓋的目的,否則就另外定義陣列儲存副本,比如:$fer_bak=array_reverse($fer);

PHP中陣列元素公升序 降序及重新排序的函式

在php陣列學習摘錄部分了解到最基本的php陣列的建立和陣列元素的顯示。需要深入學習下php陣列的相關操作。首先接觸的就是陣列元素的公升序 降序的排序問題。1 快速建立陣列的函式range 比如range 函式可以快速建立從1到array的數字陣列 以下為引用的內容 numbers range 1,...

iOS iOS之陣列的排序(公升序 降序及亂序)

nsmutablearray pricearray nsmutablearray arraywithobjects 0.2 5 44 67 98.5 1.55 nil pricearray sortusingcomparator nscomparisonresult id nonnull obj1,...

php陣列中刪除元素,再重新索引

之前如果要在某個陣列中刪除乙個元素,我是直接用的unset,也不管unset之後會發生什麼。但今天看到的東西卻讓我大吃一驚 arr array a b c d unset arr 1 print r arr print r arr 之後,結果卻不是那樣的,最終結果是 array 0 a 2 c 3 ...