KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】5陣列-5.5 排序與搜索陣列

*PHP  5陣列-5.5 排序與搜索陣列

5.5  排序與搜索陣列
在建立陣列後,我們可以針對陣列當中的索引鍵或鍵值來做排序,以下三款為較基本的排序函式。
排序陣列
sort、rsort
asort、arsort
ksort、krsort
鍵值進行排序(索引鍵會轉換型別為整數來排序)
鍵值進行排序(索引鍵維持原狀,不會轉換)
索引鍵進行排序
 sort是遞增(鍵值-由小到大)
 rsort是遞(鍵值-大到小)
 sort是遞增(鍵值-由小到大)
 rsort是遞(鍵值-大到小)
 ksort是遞增(索引-由小到大)
 krsort是遞減(索引-由大到小)


以關鍵字來搜索我們陣列當中相符合的索引鍵或鍵值!當我們找到相符的陣列元素時,會以布林值(true或false)的方式做回傳。
搜索陣列
in_array(關鍵字,陣列,布林值)
array_search(關鍵字,陣列,布林值)
使用關鍵字來搜索我們陣列的索引鍵值裡,是否有相符合的值。
使用關鍵字來搜索我們陣列的索引鍵值裡,是否有相符合的值。
*布林值(true或false)是做為型別檢查的。
 true = 查詢的內容相同外,型別也要相同。
 false = 為預設值,只查內容,不查型別
*布林值(true或false)是做為型別檢查的。
 true = 查詢的內容相同外,型別也要相同。
 false = 為預設值,只查內容,不查型別



以下會做sort、asort、ksort的三個範例,前面兩個會分別帶到in_array()、array_search()搜索陣列的函式。

另外之前有和朋友剛好討論到撈取陣列變數值,可否使用while迴圈來撈,答案是可以的,不過我個人是建議直接用foreach迴圈就好,一來精簡、二來效果也相同。下面在asort、ksort範例我也會秀出如何用while來撈陣列值。
#sort() 排序陣列
#in_array() 搜索陣列
<?php
  //sort、rsort會將索引鍵轉換為整數
  $name = array("a" => "Amy", "b" => "Tom", "c"=>"Gimmy");
  print_r($name); echo "<br/>"; // 秀出鍵值

  // in_array()函式,挑出陣列裡有Tom的值
  if (in_array('Tom', $name)) {
     print "陣列\$name有Tom<br/>";
  }

  sort($name);  // 排序-鍵值由小排到大
  foreach($name as $k => $t){
    echo "$k = $t" . "、"; // 迴圈撈值
  }
  echo "<br>";

  rsort($name);  // 排序-鍵值由大排到小
  foreach($name as $k => $t){
    echo "$k = $t" . "、"; // 迴圈撈值
  }
?>
執行結果如下:
  • Array ( [a] => Amy [b] => Tom [c] => Gimmy ) 
  • 陣列$name有Tom
  • 0 = Amy、1 = Gimmy、2 = Tom、
  • 0 = Tom、1 = Gimmy、2 = Amy、



#asort() 排序陣列
#array_search() 搜索陣列
<?php
  //asort、arsort會保留索引鍵,以鍵值做排序
  $animal = array("d"=>"ape", "a"=>"dog", "b"=>"cat", "c"=>"bear");
  print_r($animal); echo "<br/>"; // 顯示陣列元素

  // array_search()函式,挑出陣列裡有bear的值
  if (($k = array_search("bear",$animal,true)) ) {
     print "陣列\$animal有bear => $k <br/>";
  }

  asort($animal);  // 排序-鍵值由小排到大
    // 顯示陣列元素
  while (list($key, $value) = each($animal)) {
     echo "$key = $value"."、";
  }
  echo "<br/>";

  arsort($animal);  // 排序-鍵值由大排到小
    // 顯示陣列元素
  while (list($key, $value) = each($animal)) {
     echo "$key = $value"."、";
  }
?>
執行結果如下:
  • Array ( [d] => ape [a] => dog [b] => cat [c] => bear ) 
  • 陣列$animal有bear => c 
  • d = ape、c = bear、b = cat、a = dog、
  • a = dog、b = cat、c = bear、d = ape、



#ksort() 排序陣列
<?php
  $quality = array("a" => "low", "b" => "middle", "c" => "high");
  //ksort、krsort,以索引鍵做排序
  ksort($quality);  // 排序-索引鍵由小排到大
  while (list($k, $t) = each($quality)) {
     echo "$k = $t"."、";
  }
  echo "<br/>";

  krsort($quality);  // 排序-索引鍵由大排到小
  while (list($k, $t) = each($quality)) {
     echo "$k = $t"."、";
  }
?>
執行結果如下:
  • a = low、b = middle、c = high、
  • c = high、b = middle、a = low、






沒有留言:

張貼留言

@templatesyard