我有一个数组,如下所示。。
Array
(
[0] => Array
(
[0] => Array
(
[name] => Henry
)
)
[1] => Array
(
[0] => Array
(
[name] => jack
)
)
[2] => Array
(
[0] => Array
(
[name] => Albert
)
)
[3] => Array
(
[0] => Array
(
[name] => bunny
)
)
我需要在asc&不区分大小写的desc顺序。请帮帮我。
几年前我写了一个php函数,它可以做这样的事情。
function subval_sort($a, $subkey, $reverse = false)
{
if (!$a)
{
return array();
}
$b = array();
foreach ($a as $k => $v)
{
$b[$k] = strtolower($v[$subkey]);
}
if ($reverse)
{
arsort($b);
}
else
{
asort($b);
}
$c = array();
foreach ($b as $key => $val)
{
$c[] = $a[$key];
}
return $c;
}
像subval_sort($array, 'name')
一样使用它
排序函数:
使用我的自定义功能来实现您的解决方案它正在工作
function multisort (&$array, $key) {
$valsort=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$valsort[$ii]=$va[$key];
}
asort($valsort);
foreach ($valsort as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
multisort($multiarr,"order");
希望这对你有帮助。
$array = array(
array('Henry'),
array('Michael'),
array('Steve'),
array('Daniel'),
array('Albert'),
);
// Comparison function
function cmp($a, $b) {
if ($a[0] == $b[0]) {
return 0;
}
return ($a[0] < $b[0]) ? -1 : 1;
}
// Array to be sorted
print_r($array);
// Sort and print the resulting array
uasort($array, 'cmp');
print_r($array);
输出:
Array
(
[0] => Array
(
[0] => Henry
)
[1] => Array
(
[0] => Michael
)
[2] => Array
(
[0] => Steve
)
[3] => Array
(
[0] => Daniel
)
[4] => Array
(
[0] => Albert
)
)
Array
(
[4] => Array
(
[0] => Albert
)
[3] => Array
(
[0] => Daniel
)
[0] => Array
(
[0] => Henry
)
[1] => Array
(
[0] => Michael
)
[2] => Array
(
[0] => Steve
)
)