跳到主要內容

自己定義的陣列排序 - PHP

自己定義的陣列排續,不外乎就是以下三個函數:usortuasortuksort

以下是完整的程式碼
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
/** 初始資料設定 **/
$id = array(0=>'#0001',1=>'#0002');
//給usort測試的陣列
$u_data[$id[0]] = array('date'=>'2012-08-12','note'=>'上海出差');
$u_data[$id[1]] = array('date'=>'2012-08-17','note'=>'北京出差');
//給uasort測試的陣列
$ua_data[$id[0]] = array('date'=>'2012-08-12','note'=>'上海出差');
$ua_data[$id[1]] = array('date'=>'2012-08-17','note'=>'北京出差');
//給uksort測試的陣列
$uk_data[$id[0]] = array('date'=>'2012-08-12','note'=>'上海出差');
$uk_data[$id[1]] = array('date'=>'2012-08-17','note'=>'北京出差');


/** 自己定義的函式 **/
function mySort($arr1, $arr2){
    return substr_compare($arr1['date'], $arr2['date'], 0);
}

/** 進行usort **/
usort($u_data , 'mySort');
/** 印出陣列 **/
print_r($u_data);

/** 進行uasort **/
uasort($ua_data , 'mySort');
/** 印出陣列 **/
print_r($ua_data);

/** 進行uksort **/
uksort($uk_data , 'mySort');
/** 印出陣列 **/
print_r($uk_data);
?>

以下是印出結果
Array
(
    [0] => Array
        (
            [date] => 2012-08-12
            [note] => 上海出差
        )

    [1] => Array
        (
            [date] => 2012-08-17
            [note] => 北京出差
        )

)
Array
(
    [#0001] => Array
        (
            [date] => 2012-08-12
            [note] => 上海出差
        )

    [#0002] => Array
        (
            [date] => 2012-08-17
            [note] => 北京出差
        )

)
Array
(
    [#0002] => Array
        (
            [date] => 2012-08-17
            [note] => 北京出差
        )

    [#0001] => Array
        (
            [date] => 2012-08-12
            [note] => 上海出差
        )

)

看到結果,應該很明瞭的看的出來,uasort 跟 uksort 會保留陣列裡的 keys,所以就依照自己的需求寫屬於自己的排序 function 吧!

留言

這個網誌中的熱門文章

What is phpize

What is phpize According to the PHP official document : The phpize command is used to prepare the build environment for a PHP extension. If you need to build such an extension that from github or another code repositories, you can use  build tools to perform the build manually.