首頁 >後端開發 >php教程 >PHP中二維數組的排序方法

PHP中二維數組的排序方法

巴扎黑
巴扎黑原創
2016-11-23 13:59:331116瀏覽

/**
* @package     BugFree
* @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
* 對第二個項目進行二組數字組進行二項維數組排序使用array_multisort() 函數。
*
* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"…)
* @作者         m  array   $ArrayData   要排序的陣列。
* @param  string  $KeyName1    第一個排序依據。
* @param  string  $SortOrder1  要排序的順序("SORT_ASC"|"SORT_DESC")
* @param  string  $ SortType1   排序類型("SORT_REGULAR"|"SORT_MERType1   排序型            排序陣列。
*/
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
 ); I     {
        $Arg = func_get_arg($I);
             $KeyNameList[] = $Arg;
            $ SortRule []    = '$'.$Arg;
        }
        else
                }
    }
 
    // 以鍵取得於鍵的值並放入陣列中。
    foreach( $ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
  [$KeyName];
        }
    }
 
//建立eval 字串並對其進行評估。
    $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    eval ($EvalString);
 ############## 範例#################
$arr = array(
    array(
                 '尺寸'        =>    '1235',
       與       =>    '1921-11-13',
        '班級'        =>  (
        '名稱'        =>   與中功夫',
        '尺寸與         =>    'jpe',
        '時'        => ;      '        =>    'jj',
    ),
    陣列(
'name'        =>    '程式設計',
        'size'        =>   ',
        'time'        =>    '1997-11-13',
       dd',
    ),
    array(
        'name'          '65',
        'type'        =>    'jpe',
        'time          -13',
        'class'        =>    'yy',
    ),    '中國功夫',
        'size'        =>    '5',
        ' ,
        'time'        =>    '1967-12-13',
      ;
 
print_r($arr);
 
//注意:依照數字方式排序時153 比65 小
$temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");
print_ 
print_r($temp);
 
?>

 

其他相關排序函數:

 

sort ( array &$array [, int $sort_flags, sort ( array &$array [, int $sort_flags, )對數字到高的順序排列.注意,該函數參數是按引用傳遞的, 它並不是返回排序後的數組.相反,它只是對當前數組排序,不論結果如何都不返回任何值.

注意: 本函數為array 中的單元賦予新的鍵名.這將刪除原有的鍵名而不僅是重新排序.

$arr = array(9,5,2,6,8,4,3,1); sort( $arr); print_r($arr); ?>

輸出:(可以看到鍵值關聯不再保持)

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 8 [7] => 9 )

asort ( array &$array [, int $sort_flags] )

本函數對數組進行排序,數組的索引保持和單元的關聯.主要用於對那些單元順序很重要的結合數組進行排序. 同樣是按引用傳遞的,沒返回值.


輸出(可以看到鍵值不變):

Array ( [5] => 1 [1] => 2 [4] => 4 [0] => 5 [2] => 6 [3] => 8 )

rsort ( array &$array [, int $sort_flags] )

本函數類似sort函數, 對陣列進行逆向排序(最高到最低)。

註: 本函數為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅僅是重新排序。


若成功則回傳 TRUE,失敗則回傳 FALSE。

arsort ( array &$array [, int $sort_flags] )

本函數對數組進行逆向排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序。 arsort()函數與asort()相同,只是它以相反的順序(降序)對數組元素排序。

若成功則回傳 TRUE,失敗則回傳 FALSE。

ksort ( array &$array [, int $sort_flags] )

ksort和sort的區別就是對數組按照鍵名排序而不是按值排序,保留鍵名到數據的關聯.本函數主要用於關聯數組. 如果成功則回傳TRUE,失敗則回傳FALSE。

krsort ( array &$array [, int $sort_flags] )
見ksort,該函數同ksort只是把ksort後的結果逆序排序而已。

natsort ( array &$array )

本函數實現了一個和人們通常對字母數字字符串進行排序的方法一樣的排序算法並保持原有鍵/值的關聯,這被稱為“自然排序” .本演算法和通常的電腦字串排序演算法(用於sort())的區別見下面範例.

如果成功則返回TRUE,失敗則返回FALSE.
php手冊中有個非常經典的例子


上例將輸出:Standard sorting

Array ( [0] => img1.png [1] = > img10.png [2] => img12.png [3] => img2.png )

Natural order sorting

Array ( [3] => img1.png [2] => img2.
Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )

還有一些數組排序函數以u(user)開頭的, 都是一些用戶自訂排序函數。時間原因這就不多寫了。


🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php魔術方法下一篇:php魔術方法