使用phps array\u multisort使用单个比较器对2d数组进行排序
我得到了一个2d数组,其中包含一列,整个数组将在该列上进行排序。据我所知,使用array_multisort非常简单。我的问题是,要按列排序的内容包含需要以不同寻常的方式进行比较的值。所以我想到了这样的事情:使用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
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中的所有数组排序函数。