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));
$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));
这里使用自定义排序函数: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));
$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;
}
请多多指教