跳到主要內容

自己定義的陣列排序 - 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 吧!

留言

這個網誌中的熱門文章

input 陣列 - PHP

要如何在 input 裡面回傳陣列資料呢? 就寫了一個簡單的小範例。 以下是 php 原始碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php /** 印出Get裡面的資訊 **/ if ( ! empty ( $_GET )) print_r ( $_GET ); /** 初始資料設定 **/ $id = array ( 0 => '#0001' , 1 => '#0002' ); $data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); /** 印出表單資訊 **/ echo "<form method='get'>" ; foreach ( $data as $key => $row ){ echo "<input type='text' name=' { $key } [date]' value=' { $row [ 'date' ] } ' />" ; echo "<input type='text' name=' { $key } [note]' value=' { $row [ 'note' ] } ' />" ; echo "<br />" ; } echo "<input type='submit' value='送出' />" ; e...