ホームページ > php教程 > php手册 > PHP中二维数组的排序方法

PHP中二维数组的排序方法

WBOY
リリース: 2016-06-06 19:57:31
オリジナル
1154 人が閲覧しました

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 本文介绍的是从 BugFree 摘录来的二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。 ?php // 说明:PHP中二维数组的排序方法 // 整理:http://www.xk

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

    本文介绍的是从 BugFree 摘录来的二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。

   

    // 说明:PHP中二维数组的排序方法

    // 整理:http://www.xker.com

    /**

    * @package     BugFree

    * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $

    *

    *

    * Sort an two-dimension array by some level two items use array_multisort() function.

    *

    * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)

    * @author                      Chunsheng Wang

    * @param  array   $ArrayData   the array to sort.

    * @param  string  $KeyName1    the first item to sort by.

    * @param  string  $SortOrder1  the order to sort by("SORT_ASC"|"SORT_DESC")

    * @param  string  $SortType1   the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")

    * @return array                sorted array.

    */

    function sysSortArray

    (

    $ArrayData,

    $KeyName1,

    $SortOrder1 =

    "SORT_ASC",

    $SortType1 =

    "SORT_REGULAR"

    )

    {

    if

    (!

    is_array

    (

    $ArrayData

    )

    )

    {

    return

    $ArrayData;

    }

    // Get args number.

    $ArgCount =

    func_num_args

    (

    );

    // Get keys to sort by and put them to SortRule array.

    for

    (

    $I =

    1;

    $I

    $ArgCount;

    $I ++

    )

    {

    $Arg =

    func_get_arg

    (

    $I

    );

    if

    (!

    eregi

    (

    "SORT",

    $Arg

    )

    )

    {

    $KeyNameList

    [

    ] =

    $Arg;

    $SortRule

    [

    ]    =

    '$'.

    $Arg;

    }

    else

    {

    $SortRule

    [

    ]    =

    $Arg;

    }

    }

    // Get the values according to the keys and put them to array.

    foreach

    (

    $ArrayData

    AS

    $Key =>

    $Info

    )

    {

    foreach

    (

    $KeyNameList

    AS

    $KeyName

    )

    {

    $

    {

    $KeyName

    }

    [

    $Key

    ] =

    $Info

    [

    $KeyName

    ];

    }

    }

    // Create the eval string and eval it.

    $EvalString =

    'array_multisort('.

    join

    (

    ",",

    $SortRule

    )。

    ',$ArrayData);';

    eval

    (

    $EvalString

    );

    return

    $ArrayData;

    }

    //################# 示例 #################

    $arr =

    array

    (

    array

    (

    'name'        =>

    '学习',

    'size'        =>

    '1235',

    'type'        =>

    'jpe',

    'time'        =>

    '1921-11-13',

    'class'        =>

    'dd',

    ),

    array

    (

    'name'        =>

    '中国功夫',

    'size'        =>

    '153',

    'type'        =>

    'jpe',

    'time'        =>

    '2005-11-13',

    'class'        =>

    'jj',

    ),

    array

    (

    'name'        =>

    '编程',

    'size'        =>

    '35',

    'type'        =>

    'gif',

    'time'        =>

    '1997-11-13',

    'class'        =>

    'dd',

    ),

    array

    (

    'name'        =>

    '中国功夫',

    'size'        =>

    '65',

    'type'        =>

    'jpe',

    'time'        =>

    '1925-02-13',

    'class'        =>

    'yy',

    ),

    array

    (

    'name'        =>

    '中国功夫',

    'size'        =>

    '5',

    'type'        =>

    'icon',

    'time'        =>

    '1967-12-13',

    'class'        =>

    'rr',

    ),

    );

    print_r

    (

    $arr

    );

    //注意:按照数字方式排序时 153 比 65 小

    $temp = sysSortArray

    (

    $arr,

    "name",

    "SORT_ASC",

    "type",

    "SORT_DESC",

    "size",

    "SORT_ASC",

    "SORT_STRING"

    );

    print_r

    (

    $temp

    );

    ?>

PHP中二维数组的排序方法

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート