Advertisement
dzimmo

PHP-1_task-5_complete

May 24th, 2018
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.27 KB | None | 0 0
  1. <?php
  2. $phones = [ [ 'title' => 'Lenovo', 'price' => 9e3, 'reviews' => 107, 'rating' => 11],
  3.             [ 'title' => 'iPhone', 'price' => 9e4, 'reviews' => 120, 'rating' => 12],
  4.             [ 'title' => 'Samsung', 'price' => 5e4, 'reviews' => 110, 'rating' => 14],
  5.             [ 'title' => 'Lenovo', 'price' => 2e4, 'reviews' => 130, 'rating' => 15],
  6.             [ 'title' => 'Xiaomi ', 'price' => 7e3, 'reviews' => 110, 'rating' => 13], ];
  7.            
  8. // Запишем в переменную $type обычную строку, которая соответствует свойству конкретного товара
  9. // которое содержится в массиве свойств конкретного товара. Она будет отвечать за тип сортировки
  10.  
  11. //Сортировать можем по любым из этих ключей: title, price, reviews, rating
  12. $type = "price";
  13.  
  14. // напишем анонимную функцию которая сортирует массив товаров по ключу массива,
  15. //который содержит свойства конкретного товара. Используем вместо if else тернарные операторы ? и :
  16. // При использовании use значение $type передается в функцию в качестве переменной наследованной из
  17. //глобальной области видимости
  18.  
  19. $mySort = function ($arg1,$arg2) use ($type){
  20.    
  21. //Указываем $type в качестве ключа аргументов $arg1 и $arg1 которые должны быть массивами
  22. //Получается мы сортируем по тому ключу который в виде строки приходит из переменной $type
  23.  
  24.     return $arg1[$type] < $arg2[$type] ? 1 : -1;
  25.    
  26. };
  27. // Без тернарных операторов это выражение выглядит так:
  28. // $mysort = function ($arg1,$arg2) use ($type){
  29. // if ($arg1[$type] < $arg2[$type])
  30. // return 1;
  31. // else return -1;
  32. // };
  33.  
  34. //
  35. usort($phones, $mySort);
  36.  
  37. //Выводим содержание массива на экран
  38. echo "<pre>", print_r($phones), "</pre>";
  39. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement