PHP中對陣列進行排序

2021-09-30 10:12:07 字數 2078 閱讀 4621

.測試一

$array = array(

array('id' => 1, 'name' => 'a'),

array('id' => 5, 'name' => 'b'),

array('id' => 3, 'name' => 'c')

);按列id的值進行排序

foreach ($array as $key => $row)

// 把 $data 作為最後乙個引數,以通用鍵排序

print_r($array);

array_multisort($id, sort_asc, $array);

print_r($array);

與資料庫中一行一行記錄的原理是類似的,1,a、5,b、3,c分別是三行記錄中的內容,不管怎麼排序,他們一定還是在一起的。

輸出:排序前:

array

([0] => array

([id] => 1

[name] => a

)[1] => array

([id] => 5

[name] => b

)[2] => array

([id] => 3

[name] => c))

排序後:

array

([0] => array

([id] => 1

[name] => a

)[1] => array

([id] => 3

[name] => c

)[2] => array

([id] => 5

[name] => b))

2.測試二

$ar = array(

array (100, "10", "a", 100), 

array (5, 3, "2", 1)

);print_r($ar);

array_multisort ($ar[0], sort_asc, sort_string,

$ar[1], sort_numeric, sort_desc);

print_r($ar);

本例中經過排序後,第乙個陣列將包含 10,100,100,"a"(作為字串上公升排序),第二個陣列將包含 3,5,1,2(作為數值下降排序)。 

array_multisort的排序方式有點類似於sql的order by語句,當order by後面有2個或以上的排序條件時,先按第乙個條件排序,再按第二個條件排序。

在此例中陣列$ar排序的結果不是$ar = array(array (10, 100, 100, "a"), array (5, 3, 2, 1)),而是$ar = array(array (10, 100, 100, "a"), array (3, 5, 1, 2)),原理與sql的order語句是類似的。

100與5、10與3、a與2、100與1是對齊的,不管怎麼排序,他們最後還是對齊的。

輸出:排序前:

array

([0] => array

([0] => 100

[1] => 10

[2] => a

[3] => 100

)[1] => array

([0] => 5

[1] => 3

[2] => 2

[3] => 1))

排序後:

array

([0] => array

([0] => 10

[1] => 100

[2] => 100

[3] => a

)[1] => array

([0] => 3

[1] => 5

[2] => 1

[3] => 2))

3.總結

函式array_multisort的用法遠遠不止這麼簡單,這兒有很多精典的例子,有需要的時候可以再仔細看看。

對陣列進行排序

函式名稱 排序依據 陣列索引鍵保持 排序的順序 相關函式 array multisort 值鍵值關聯的保持,數字型別的不保持 第乙個陣列或者由選項指定 array walk asort 值是 由低到高 arsort arsort 值是 由高到低 asort krsort 鍵是 由高到低 ksort ...

php對陣列進行分頁

34 5678 9101112 1314 1516 1718 1920 2122 2324 2526 2728 2930 3132 3334 3536 3738 3940 arr click array array clicks 3,clickdate 2010 10 11 array clicks...

iOS 對陣列中的物件進行排序

1 直接對陣列中的物件排序 對陣列進行降序 nscomparator cmptr id obj1,id obj2 if obj1 integervalue obj2 integervalue return nscomparisonresult nsorderedsame nsarray sorarr...