php数组排序同步


php array sort synchronize

假设我有一个数组($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);