➤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" . "、"; // 迴圈撈值
}
?>
#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"."、";
}
?>
#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"."、";
}
?>
沒有留言:
張貼留言