1

Мне нужно отсортировать по цене, а затем по предметам с одинаковыми ценами. У меня есть сорт по цене. Вот массив и сортировать, что у меня есть:Мне нужно сортировать по цене, а затем по времени для одинаковых цен многомерный связанный массив

<?php 
$a = array(
      1 => array('price' => 9.25, 'timestamp_added' => 1301945848, 'name' => 'pencils'), 
      4 => array('price' => 19.15, 'timestamp_added' => 1299267448, 'name' => 'crayon box'), 
      15 => array('price' => 4.25, 'timestamp_added' => 1299785848, 'name' => 'markers'), 
      2 => array('price' => 4.28, 'timestamp_added' => 1299785848, 'name' => 'eraser'), 
      44 => array('price' => 13.99, 'timestamp_added' => 1299872248, 'name' => 'trapper'), 
      32 => array('price' => 9.25, 'timestamp_added' => 1299872248, 'name' => 'notebook'), 
      14 => array('price' => 13.99, 'timestamp_added' => 1301945848, 'name' => 'sharpener'), 
      5 => array('price' => 15.01, 'timestamp_added' => 1299872248, 'name' => 'calculator'), 
      60 => array('price' => 15.01, 'timestamp_added' => 1397433600, 'name' => 'calculator'), 
      70 => array('price' => 15.01, 'timestamp_added' => 1293840000, 'name' => 'calculator'), 
      80 => array('price' => 15.01, 'timestamp_added' => 1363132800, 'name' => 'calculator') 
     ); 

function printList($a) { 
      echo "<br><br> Printing the array: <br>"; 
      foreach ($a as $key => $value) { 
       echo "<br /> Product ID $key <b>Price:</b> $" . $value['price'] . " <b>Timestamp:</b> " 
       . $value['timestamp_added'] . " <b>Name:</b> " . $value['name'] . " <b>Date Added: </b>" . date('M d, Y', $value['timestamp_added']); 
      } 
     } 

     $sortByPrice = function ($a, $b) { 
        return ($a['price'] >= $b['price']) ? 1 : 0; 
       }; 
     printList($a); 
     echo "<br><br>Sorting by price..."; 
     uasort($a, $sortByPrice); 
     printList($a); 
     ?> 

Как заставить его сортировать по отметке времени, если цены одинаковы? Я пытаюсь изменить функцию sortByPrice, чтобы он это делал. Должен ли я иметь две функции сортировки или одну лучшую функцию сортировки? Как мне это сделать?

ответ

1

Почему бы просто не расширить его в функции anone sortByPrice, чтобы вы сравнивали временную метку, если цены равны? Такие, как следует:

$sortByPrice = function ($a, $b) { 
        if($a['price'] == $b['price']){ 
         return ($a['timestamp_added'] >= $b['timestamp_added']) ? 1 : 0; 
        } 
        else{ 
         return ($a['price'] >= $b['price']) ? 1 : 0; 
        } 
      }; 

Приветствия,

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