Board logo

標題: 4-2-3 陣列排序 [打印本頁]

作者: 小誌    時間: 2011-4-18 19:54     標題: 4-2-3 陣列排序

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

  6. sort($X);
  7. foreach ($X as $key=>$value)
  8. {
  9. echo "元素 $key;元素值 $value <br>";
  10. }
  11. ?>
複製代碼
當上例執行後網頁出現如下:
[attach]5494[/attach]
圖4-13   ex04_15.php。
作者: 小誌    時間: 2011-4-18 19:57

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

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


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

  6. asort($X);
  7. foreach ($X as $key=>$value)
  8. {
  9. echo "元素 $key;元素值 $value <br>";
  10. }
  11. ?>
複製代碼
上例結果如下圖,元素已經加以排序,但也保留了元素原來的註標索引值:
[attach]5496[/attach]
圖4-15   ex04_17.php。
作者: 小誌    時間: 2011-4-18 19:59

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

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

  6. arsort($X);
  7. foreach ($X as $key=>$value)
  8. {
  9. echo "元素 $key;元素值 $value <br>";
  10. }
  11. ?>
複製代碼
[attach]5498[/attach]
圖4-17   ex04_19.php。
作者: 小誌    時間: 2011-4-18 20:01

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

  6. ksort($X);
  7. foreach ($X as $key=>$value)
  8. {
  9. echo "元素 $key;元素值 $value <br>";
  10. }
  11. ?>
複製代碼
[attach]5499[/attach]
圖4-18   ex04_20.php。
作者: qoorocky    時間: 2013-7-7 13:33

圖4-13放錯了?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)