php数组排序同步

时间:2013-12-09 21:55:56

标签: php array-multisort

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

1 个答案:

答案 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);