繁体   English   中英

从php中的时间戳进行多维数组排序

[英]multi dimensional array sorting from timestamp in php

我有这个数组,我尝试了usort和array_multisort,但是都没有用。 我想用release_date对每个内部数组进行排序。 多数民众赞成最新的release_date应该首先在测试数组中,并类似地在第二个内部数组“再次测试”中

$new_array = array(
    'testing' => array(
        array(
            'id' => 405275016,
            'release_date' => '2010-12-02 00:00:00'
        ),
        array(
            'id' => 342809056,
            'release_date' => '2009-12-09 00:00:00'
        ),
        array(
            'id' => 292430272,
            'release_date' => '2008-10-19 00:00:00'
        )
    )
    'test again' => array(
        array(
            'id' => 405275016,
            'release_date' => '2010-12-02 00:00:00'
        )
        array(
            'id' => 292430272,
            'release_date' => '2008-10-19 00:00:00'
        )
    )
);

任何想法将不胜感激。

编辑

我做到了

foreach($new_array as $vsort) {
    uasort($vsort, function (array $a, array $b) { 
        return $a["release_date"] - $b["release_date"]; 
    });
}

但是我的new_array没有任何new_array

您问题的答案在uasort()

如果要对每个数组排序,请执行foreach循环并在每个数组上运行uasort()

function mySort($a, $b)
{
    if ($a['id'] == $b['id']) {
        return 0;
    }
    return ($a['id'] < $b['id']) ? -1 : 1;
}

foreach ($array as $index => $arr) {
    uasort($array[$index], 'mySort');
}

http://codepad.org/TbNUiwBR

看来您使用的是PHP 5.3。 在这种情况下,可以这样重写:

foreach ($array as $index => $arr) {
    uasort($array[$index], function($a, $b) {
        if ($a['id'] == $b['id']) {
            return 0;
        }
        return ($a['id'] < $b['id']) ? -1 : 1;
    });
}

使用foreach($ new_array as $ key => $ val)并传递$ new_array [$ key]代替$ vsort,$ vsort是数组项的副本,而不是项本​​身

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM