+ -
当前位置:首页 → 问答吧 → 这样的数组请问如何排序呢?

这样的数组请问如何排序呢?

时间:2011-08-21

来源:互联网

PHP中,这样的一个数组,我想用sort_order  键值进行排序,不过基础太差,半天想不通怎么写,请教大神了
Array
(
    [0] => Array
        (
            [name] => 张三
       [sort_order] => 30      )

    [1] => Array
        (
            [name] => 李四
[sort_order] => 0
        )

    [2] => Array
        (
            [name] => 王五            [sort_order] => 0
        )

    [3] => Array
        (
            [name] => 赵六            [sort_order] => 3
        )

    [4] => Array
        (
            [name] => 胡七            [sort_order] => 4
        )

    [5] => Array
        (
            [name] => 王八            [sort_order] => 5
        )
)

[ 本帖最后由 iuyes 于 2011-8-21 15:43 编辑 ]

作者: iuyes   发布时间: 2011-08-21

复制内容到剪贴板
代码:
<?php
$test = array (
  0 =>
  array (
    'name' => '张三',
    'sort_order' => 30,
  ),
  1 =>
  array (
    'name' => '李四',
    'sort_order' => 0,
  ),
  2 =>
  array (
    'name' => '王五',
    'sort_order' => 0,
  ),
  3 =>
  array (
    'name' => '赵六',
    'sort_order' => 3,
  ),
  4 =>
  array (
    'name' => '胡七',
    'sort_order' => 4,
  ),
  5 =>
  array (
    'name' => '王八',
    'sort_order' => 5,
  ),
);
//排序函数
//此函数只适用于二维数组 而且目标排序 键名统一的情况下
//@param $array  array 需要进行排序的数组
//@param $name string 根据哪个键名排序
//@param $sc  string 排序方式  ASC从小到大 DESC 从大到小
//@return array
function sortByValueKey($array, $name='sort', $sc='ASC'){
    $orderby = $sc == 'ASC' ? '>' : '<';
    $body = 'return $a[\''.$name.'\'] '.$orderby.' $b[\''.$name.'\'];';
    $fun = create_function('$a, $b', $body);
    uasort($array, $fun);
    return $array;
}
//测试
echo '<pre>';
print_r(sortByValueKey($test,'sort_order','ASC'));
echo '</pre>';
?>

作者: fonqing   发布时间: 2011-08-21