Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中根据特定列对多维数组进行排序_Php_Sorting_Multidimensional Array - Fatal编程技术网

在php中根据特定列对多维数组进行排序

在php中根据特定列对多维数组进行排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,我想根据内部数组中的字段对多维数组进行排序,如下所示: $result = array( array("first" => 1, "second" => 5), array("first" => 3, "second" => 8), array("first" => 6, "second" => 7), array("first" => 6, "second" => 1) ); sort($result,"second"); /

我想根据内部数组中的字段对多维数组进行排序,如下所示:

$result = array(
  array("first" => 1, "second" => 5),
  array("first" => 3, "second" => 8),
  array("first" => 6, "second" => 7),
  array("first" => 6, "second" => 1)
);

sort($result,"second");

/*
$result = array(
  array("first" => 6, "second" => 1),
  array("first" => 1, "second" => 5),
  array("first" => 6, "second" => 7),
  array("first" => 3, "second" => 8)
);
*/
PHP中是否有类似预期的排序函数,或者我必须重新实现它?

用于此目的

此函数将使用用户提供的比较函数按值对数组进行排序。如果要排序的数组需要按照一些非平凡的条件进行排序,则应使用此函数

函数cmp($a,$b){
如果($a['second']=$b['second']){
返回0;
}
回报率($a['second']<$b['second'])?-1:1;
}
usort($array,'cmp');
甚至可以将“second”first和“first”second排序:)(如果“second”相同,则按“first”排序)

函数cmp($a,$b){
如果($a['second']=$b['second']){
如果($a['first']=$b['first']){
返回0;
}
报税表($a['first']<$b['first'])?-1:1;
}
回报率($a['second']<$b['second'])?-1:1;
}
usort($数组,“cmp”);

这是一个非常简单的数组排序函数

function sort_by_key($a, $subkey) {
    foreach($a as $k=>$v) {
        $b[$k] = strtolower($v[$subkey]);
    }
    asort($b);
    foreach($b as $key=>$val) {
        $c[] = $a[$key];
    }
    return $c;
}
您可以这样称呼它:

sort_by_key($result , 'second');

你能在这里展示你想要的结果吗?就像评论中的一样
function sort_by_key($a, $subkey) {
    foreach($a as $k=>$v) {
        $b[$k] = strtolower($v[$subkey]);
    }
    asort($b);
    foreach($b as $key=>$val) {
        $c[] = $a[$key];
    }
    return $c;
}
sort_by_key($result , 'second');