假设我有一个包含数组的数组($ results)(location,start_date,coord_lng,coord_lat等...)。我的想法是,我想通过start_date对$ result进行排序,使用array_multisort非常简单。变得越来越困难的是所有其他阵列(location,coord_lng,coord_lat等)应该以相同的方式重新组织,我不知道该怎么做!
查看此处提供的解决方案: PHP: Sort multi-dimension array 我不知道如何适应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']);
答案 0 :(得分:0)
您是否需要将值分布在不同的数组中?我更喜欢属于一起的信息,也可以在代码中进行分组。这样可以轻松提取一个点(及其所有信息),添加新点以及排序。
在此示例中,它表示$results
看起来像这样
[
location1,
start_date1,
etc...
],
[
location2,
start_date2,
etc...
],
[
location3,
start_date3,
etc...
]
现在,您可以通过usort()
对它们进行排序,并将属于一起的值组合在一起。
我创建了一个小例子(watch it work here)
$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);