多维数组排序问题请教 急!

paradisfuna 2003-08-18 03:26:04
急!
在一个多位数组中,如何根据元素(array)中的某一列进行排序?

例如数组 a = array(array("item1"=>"a","item2"="b"),array("item1"=>"a","item2"="b"))
如何将数组按照item1的值排序呢?有什么现成的函数?如何使用?谢谢。
...全文
46 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paradisfuna 2003-08-19
  • 打赏
  • 举报
回复
自己写了一个函数,不过只针对有固定的结构的二位数组。

function array_sort($arr,$keys,$type="asc") {
$keysvalue = array();
foreach($arr as $key=>$val) {
$keysvalue[] = $val[$keys];
}
if($type=="asc"){
asort($keysvalue);
}else {
rsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key=>$vals) {
$keysort[] = $key;
}
$new_array = array();
for($ii=0; $ii<count($keysort); $ii++) {
$new_array[] = $arr[$keysort[$ii]];
}
return $new_array;
}
请多多指教
paradisfuna 2003-08-18
  • 打赏
  • 举报
回复
谢谢,:)。
终于看懂了,:)
xuzuning 2003-08-18
  • 打赏
  • 举报
回复
多维数组排序时没有预设的方法。因为php的数组是巢状结构,并不通常意义上的数组的行列结构。
这里使用自定义排序函数:usort
该函数的第二个参数是自定义的回调函数,传入参数两个,返回值为:-1,0,1之一
所贴array_sort使用了创建临时函数的函数caerte_function
展开后是
function cmd($a,$b) {
global $k;
if($a[$k] == $b[$k]) return 0;
return $a[$k]>$b[$k]?1:-1;
}
usort($array,cmd);


// 数组排序
function array_sort($array,$key=0,$type="asc") {
$s = 'if($a['.$key.'] == $b['.$key.']) return 0;';
if($type == "asc")
$s .= 'return $a['.$key.'] == $b['.$key.']?1:-1;';
else
$s .= 'return $a['.$key.'] == $b['.$key.']?-1:1;';
$newfunc = create_function('$a,$b',$s);
usort($array,$newfunc);
return $array;
}
$ar = array(
array(1,3,2,4),
array(3,2,4,1)
);
print_r(array_sort($ar,1));
paradisfuna 2003-08-18
  • 打赏
  • 举报
回复
没明白array_sort func 中的$a是?
xuzuning 2003-08-18
  • 打赏
  • 举报
回复
function array_sort($array,$key=0,$type="asc") {
$s = 'if($a['.$key.'] == $b['.$key.']) return 0;';
if($type == "asc")
$s .= 'return $a['.$key.'] == $b['.$key.']?1:-1;';
else
$s .= 'return $a['.$key.'] == $b['.$key.']?-1:1;';

usort($array,$newfunc);
return $array;
}
$ar = array(
array(1,3,2,4),
array(3,2,4,1)
);
print_r(array_sort($ar,1));

21,881

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧