2018/10/05

[程式設計] PHP Array陣列排序,介紹PHP常用的7種排序法

分別會介紹隨機排列、大到小排列(根據值、根據Key、不改變index)、小到大排列(根據值、根據Key、不改變index),總共7種方式排序。

 

程式碼:

<?php
//原始陣序
$array = array(5,8,9,5,4,4,2,1,0,5,8,7,4,5,2,6,3,5,1,5);
  
//隨機排序
shuffle($array);
echo "隨機排列\n";
print_r($array);
  
//小到大排序(根據值,會改變index)
sort($array);
echo "小到大排序(根據值,會改變index)\n";
print_r($array);
  
//大到小排序(根據值,會改變index)
rsort($array);
echo "大到小排序(根據值,會改變index)\n";
print_r($array);
  
//小到大排序(根據值,不改變index)
asort($array);
echo "小到大排序(根據值,不改變index)\n";
print_r($array);
  
//大到小排序(根據值,不改變index)
arsort($array);
echo "大到小排序(根據值,不改變index)\n";
print_r($array);
  
//小到大排序(根據key)
ksort($array);
echo "小到大排序(根據key)\n";
print_r($array);
  
//大到小排序(根據key)
krsort($array);
echo "大到小排序(根據key)\n";
print_r($array);
?>

執行結果:

隨機排列
Array
(
    [0] => 2
    [1] => 5
    [2] => 7
    [3] => 5
    [4] => 3
    [5] => 1
    [6] => 4
    [7] => 9
    [8] => 5
    [9] => 4
    [10] => 5
    [11] => 6
    [12] => 5
    [13] => 5
    [14] => 8
    [15] => 8
    [16] => 4
    [17] => 1
    [18] => 2
    [19] => 0
)
小到大排序(根據值,會改變index)
Array
(
    [0] => 0
    [1] => 1
    [2] => 1
    [3] => 2
    [4] => 2
    [5] => 3
    [6] => 4
    [7] => 4
    [8] => 4
    [9] => 5
    [10] => 5
    [11] => 5
    [12] => 5
    [13] => 5
    [14] => 5
    [15] => 6
    [16] => 7
    [17] => 8
    [18] => 8
    [19] => 9
)
大到小排序(根據值,會改變index)
Array
(
    [0] => 9
    [1] => 8
    [2] => 8
    [3] => 7
    [4] => 6
    [5] => 5
    [6] => 5
    [7] => 5
    [8] => 5
    [9] => 5
    [10] => 5
    [11] => 4
    [12] => 4
    [13] => 4
    [14] => 3
    [15] => 2
    [16] => 2
    [17] => 1
    [18] => 1
    [19] => 0
)
小到大排序(根據值,不改變index)
Array
(
    [19] => 0
    [17] => 1
    [18] => 1
    [15] => 2
    [16] => 2
    [14] => 3
    [11] => 4
    [12] => 4
    [13] => 4
    [10] => 5
    [9] => 5
    [6] => 5
    [7] => 5
    [5] => 5
    [8] => 5
    [4] => 6
    [3] => 7
    [1] => 8
    [2] => 8
    [0] => 9
)
大到小排序(根據值,不改變index)
Array
(
    [0] => 9
    [2] => 8
    [1] => 8
    [3] => 7
    [4] => 6
    [6] => 5
    [7] => 5
    [8] => 5
    [9] => 5
    [5] => 5
    [10] => 5
    [12] => 4
    [13] => 4
    [11] => 4
    [14] => 3
    [16] => 2
    [15] => 2
    [17] => 1
    [18] => 1
    [19] => 0
)
小到大排序(根據key)
Array
(
    [0] => 9
    [1] => 8
    [2] => 8
    [3] => 7
    [4] => 6
    [5] => 5
    [6] => 5
    [7] => 5
    [8] => 5
    [9] => 5
    [10] => 5
    [11] => 4
    [12] => 4
    [13] => 4
    [14] => 3
    [15] => 2
    [16] => 2
    [17] => 1
    [18] => 1
    [19] => 0
)
大到小排序(根據key)
Array
(
    [19] => 0
    [18] => 1
    [17] => 1
    [16] => 2
    [15] => 2
    [14] => 3
    [13] => 4
    [12] => 4
    [11] => 4
    [10] => 5
    [9] => 5
    [8] => 5
    [7] => 5
    [6] => 5
    [5] => 5
    [4] => 6
    [3] => 7
    [2] => 8
    [1] => 8
    [0] => 9
)

沒有留言:

別被兩次經驗嚇跑!揭開「小樣本偏誤」的真相

你有沒有遇過這種人:數學只考一次就說「我真的不適合算數學」;或是跟另一半吵兩次架,就認定對方「根本不在乎我」。這類推論乍看合理,其實暗藏心理學與統計上的大坑——這就是所謂的「小樣本偏誤」(Law of Small Numbers)。 簡單說,人類天生不擅長處理機率。當我們看到...