这样的数组请问如何排序呢?
时间: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 编辑 ]
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
复制内容到剪贴板
$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>';
?>
代码:
<?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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28