Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中基于时间戳的多维数组排序_Php_Arrays_Multidimensional Array - Fatal编程技术网

php中基于时间戳的多维数组排序

php中基于时间戳的多维数组排序,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个数组,我尝试了usort和array_multisort,但都不起作用。我想用发布日期对每个内部数组进行排序。这是最新的发布日期,在测试阵列中应该排在第一位,同样在第二个内部阵列“再次测试”中 $new_array = array( 'testing' => array( array( 'id' => 405275016, 'release_date' => '2010-12-02 00:00:00

我有这个数组,我尝试了usort和array_multisort,但都不起作用。我想用发布日期对每个内部数组进行排序。这是最新的发布日期,在测试阵列中应该排在第一位,同样在第二个内部阵列“再次测试”中

$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"]; 
    });
}

但是我的
新数组没有发生任何问题
您的问题的答案在于
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');
}
函数mySort($a,$b)
{
如果($a['id']=$b['id']){
返回0;
}
回报($a['id']<$b['id'])?-1:1;
}
foreach($index=>$arr的数组){
uasort($array[$index],'mySort');
}

看起来您正在使用PHP5.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($array as$index=>$arr){
uasort($array[$index],函数($a,$b){
如果($a['id']=$b['id']){
返回0;
}
回报($a['id']<$b['id'])?-1:1;
});
}

使用foreach($key=>$val)并传递$new\u array[$key]而不是$vsort,$vsort是数组项的副本,而不是该项本身

查看此链接这给了我一个数组作为数组([测试]=>1[再次测试]=>1)请查看我的editya i测试。它工作得很好。谢谢你的帮助。:)