假设我有一个数组($results),其中包含数组(location、start_date、coord_lng、coord_lat等)。其想法是,我想按start_date对$result进行排序,这使用array_multsort非常简单。更困难的是,所有其他数组(location、coord_lng、coord_lat等)都应该以相同的方式进行重组,我不知道该怎么做!
查看此处提供的解决方案:PHP:排序多维数组我不知道如何适应2个以上的阵列。。。
我已经生成了这个代码,但有什么更快的吗?
foreach ($row['table'] as $key2 => $row2)
{
if($key2 != 'debut')
{
$dates = $results[$key]['table']['debut'];
array_multisort($dates, SORT_ASC, $results[$key]['table'][$key2]);
}
}
$dates = $results[$key]['table']['debut'];
array_multisort($dates, SORT_ASC, $results[$key]['table']['debut']);
是否需要将值分布在不同的数组中?我更喜欢将属于一起的信息分组到代码中。这使得提取一个点(及其所有信息)、添加新点以及排序变得容易。
在这个例子中,它意味着$results
看起来像这个
[
location1,
start_date1,
etc...
],
[
location2,
start_date2,
etc...
],
[
location3,
start_date3,
etc...
]
现在,您可以通过usort()
对它们进行排序,并使属于一起的值仍然分组在一起。
我创建了一个小例子(在这里观察它的工作)
$arr1 = array("foo", "ybar", "baz");
$arr2 = array("foo2", "ybar2", "baz2");
$arr3 = array("foo3", "ybar3", "baz3");
$results = array();
foreach ($arr1 as $key=>$value) {
$results[] = array(
'arr1' => $value,
'arr2' => $arr2[$key],
'arr3' => $arr3[$key],
);
}
function sortByArr1($a, $b) {
return strcmp($a['arr1'], $b['arr1']);
}
usort($results, "sortByArr1");
print "<pre>";
print_r($results);