2015-08-18 6 views
0

У меня есть большой многомерный массив, и я хочу, чтобы отсортировать его дважды по дате с использованием array_multisort и получить последние 3 массивов из каждого родаИспользование PHP array_multisort дважды, чтобы отсортировать тот же массив

я мог бы создать дубликат массива но это, кажется, отходы, когда все, что я хочу, это 3 массивы из него

$rows = array(
    array(...), 
    array(...), 
    ... 
); 

создать массивы, которые будут отсортированы как этот

foreach($rows as $key => $row) { 
    $submit_date[$key] = $row['Submit_Date']; 
    $view_date[$key] = $row['View_Date']; 
} 

на этой итерации O е сорта, все работает, как я ожидал

array_multisort($view_date, SORT_DESC, $rows); 
$viewed = array_slice(array_unique($rows, SORT_REGULAR), 0, 3, true); 

, но на этом, которая запускается сразу после, я получаю разные результаты, что я ожидал

array_multisort($submit_date, SORT_DESC, $rows); 
$unlisted = array_slice(array_unique($rows, SORT_REGULAR), 0, 3, true); 

Я не могу разобраться в обоих сортировки массивов потому что будут случаи, когда $ view_date массив будет иметь нулевые значения.

Есть ли способ, которым я могу использовать один и тот же массив для сортировки по дате просмотра, получить последние 3 строки, затем отсортировать массив по дате отправки, а затем получить последние 3 строки?

ответ

0

Это потому, что ваш первый мультисборщик испортил порядка $rows.
фиктивный массив должен сделать трюк: $temp = $rows;

+0

Вот что я думал, но надеялся, что я мог бы прибегнуть исходный массив – AdRock

+0

Конечно, можно поставить 'рода ($ строки),' перед каждым Multisort. – WhoIsJohnDoe

Смежные вопросы