麻辣家族討論版版's Archiver

小誌 發表於 2011-4-18 19:54

4-2-3 陣列排序

[color=DarkRed][size=4][b]4-2-3   陣列排序[/b][/size][/color]
要對陣列元素的資料加以順序排列,不需要我們自己轉寫程式敘述,直接使用PHP所提供的函數即可:
[color=RoyalBlue][size=3][b]sort()函數[/b][/size][/color]
sort()函數可根據字母順序或數值大小加以排序:(ex04_15.php)[code]<?
$X[0] ="tw";
$X[1] ="com";
$X[2] ="net";
$X[3] ="gov";

sort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code]當上例執行後網頁出現如下:
[attach]5494[/attach]
圖4-13   ex04_15.php。

小誌 發表於 2011-4-18 19:57

[color=RoyalBlue][size=3][b]asort()函數[/b][/size][/color]
sort()函數對陣列元素排序後,則陣列中的元素註標索引將會被重新編排,如下例:(ex04_16.php)[code]<?
$X[252] ="com";
$X[20] ="gov";
$X[100] ="net";
$X[] ="tw";

sort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code]當上例陣列被sort()函數排序元素後,陣列元數的註標與元素值的關係如下圖所示:
[attach]5495[/attach]
圖4-14   ex04_16.php。


倘若,要陣列進行元素排序,又要保留元素原有的註標索引,則必須使用asort()函數進行排序:(ex04_17.php)[code]<?
$X=array("charles" => "小誌",
         "connie" => "無尾熊",
         "chiey" => "小魏",
         "egge" => "小魚");

asort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code]上例結果如下圖,元素已經加以排序,但也保留了元素原來的註標索引值:
[attach]5496[/attach]
圖4-15   ex04_17.php。

小誌 發表於 2011-4-18 19:59

[color=RoyalBlue][size=4][b]rsort()函數與arsort()函數[/b][/size][/color]
sort()函數是對陣列元素正向排序,而rsort()函數則對陣列元素進行逆向排序,現在以與範例ex04_16.php相同的陣列使用rsort()排序:(ex04_18.php)[code]<?
$X[252] ="com";
$X[20] ="gov";
$X[100] ="net";
$X[] ="tw";

rsort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code]由上例中您會發現,rsort()函數會對陣列元素逆向排序,同時也將元素的原始註標索引重新編排了!
[attach]5497[/attach]
圖4-16   ex04_18.php。
若要對陣列元素逆向排序,但不重新編排元素的原始註標索引,則必須使用arsort()函數來排序:(ex04_19.php)[code]<?
$X[252] ="com";
$X[20] ="gov";
$X[100] ="net";
$X[] ="tw";

arsort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code][attach]5498[/attach]
圖4-17   ex04_19.php。

小誌 發表於 2011-4-18 20:01

[color=RoyalBlue][size=3][b]ksort()函數[/b][/size][/color]
之前介紹的sort()、asort()、rsort()、arsort()函數,不管是正向或逆向都是對陣列元素排序,而ksort()函數則對陣列「註標」排序,現在以與範例ex04_17.php相同的陣列使用ksort()排序:(ex04_20.php)[code]<?
$X=array("charles" => "小誌",
         "connie" => "無尾熊",
         "chiey" => "小魏",
         "egge" => "小魚");

ksort($X);
foreach ($X as $key=>$value)
{
echo "元素 $key;元素值 $value <br>";
}
?>[/code][attach]5499[/attach]
圖4-18   ex04_20.php。

qoorocky 發表於 2013-7-7 13:33

圖4-13放錯了?

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供