使用phps array\u multisort使用单个比较器对2d数组进行排序

使用phps array\u multisort使用单个比较器对2d数组进行排序,php,sorting,multidimensional-array,comparator,Php,Sorting,Multidimensional Array,Comparator,我得到了一个2d数组,其中包含一列,整个数组将在该列上进行排序。据我所知,使用array_multisort非常简单。我的问题是,要按列排序的内容包含需要以不同寻常的方式进行比较的值。所以我想到了这样的事情: function main(){ $toBeSorted = array(array(...), ..., array(...)); $sortColumnIndex = n; $sort_column = array(); //Code copied f

我得到了一个2d数组,其中包含一列,整个数组将在该列上进行排序。据我所知,使用array_multisort非常简单。我的问题是,要按列排序的内容包含需要以不同寻常的方式进行比较的值。所以我想到了这样的事情:

function main(){
    $toBeSorted = array(array(...), ..., array(...));
    $sortColumnIndex = n;
    $sort_column = array();

    //Code copied from provided link
    foreach ($toBeSorted as $row)
        $sort_column []= $row[$sortColumnIndex];

    array_multisort($this->comparator(),$sort_column, $toBeSorted);
}

function comparator(a,b){
    return 1;
}
如您所见,我想将比较器传递给排序函数。我可能会以非php的方式思考很多问题。

有一个函数,它使用回调进行排序


否则,您可以查看and函数,它们迭代一个数组并将一个函数应用于每个成员。

我通过将排序空间转换为一个数组来解决此问题,该数组\u multisort可以处理:

...

$sortColumn = array();
foreach($toBeSorted as $value){
     $sortColumn[] = $this->transform($value);
}
array_multisort($sortColumn, $toBeSorted);

...
我的转换函数只做了我想象的回调函数所能做的一切

function transform($value){
    //i.e. return real part of complex number
    //or parse strings or any kind of strange datatypes
}

是否还有另一个函数与usort类似,但返回元素的位置数组?就像蟒蛇一样?因为否则我无法跟踪其他列来对2d数组进行排序?我认为它不存在。PHP中的所有数组排序函数。