сортировка многомерного массива по временной метке в php - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть этот массив, я пробовал usort и array_multisort, но оба не работали.Я хочу отсортировать каждый внутренний массив с помощью release_date.То, что последняя версия release_date должна стоять на первом месте в тестируемом массиве и, аналогично, во втором внутреннем массиве 'test again'

$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'
        )
    )
);

Любая идея будет высоко оценена.

EDIT

я сделал

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

но с моим new_array

ничего не случилось

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Ответ на ваш вопрос заключается в 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;
    });
}
0 голосов
/ 13 декабря 2011

используйте foreach ($ new_array как $ key => $ val) и передайте $ new_array [$ key] вместо $ vsort, $ vsort - это копия элемента массива, а не сам элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...