fork download
  1. <?php
  2. $cities = [
  3. ["name" => "Джакарта", "country" => "Индонезия", "population" => "30539000"],
  4. ["name" => "Токио", "country" => "Япония", "population" => "37843000"],
  5. ["name" => "Шанхай", "country" => "КНР", "population" => "23416000"],
  6. ["name" => "Нью-йорк", "country" => "США", "population" => "20630000"],
  7. ["name" => "Москва", "country" => "Россия", "population" => "16170000"],
  8. ["name" => "Дели", "country" => "Индия", "population" => "24998000"],
  9. ["name" => "Мехико", "country" => "Мексика", "population" => "20063000"],
  10. ["name" => "Стамбул", "country" => "Индия", "population" => "13287000"],
  11. ["name" => "Карачи", "country" => "Пакистан", "population" => "22123000"],
  12. ["name" => "Лондон", "country" => "Великобритания", "population" => "10236000"],
  13.  
  14. ];
  15.  
  16.  
  17. function filterByPopulation($cities) { //эту функцию было легко написать
  18. return array_filter($cities, function($array) {
  19. return ($array["population"] > 20000000);
  20. });
  21. }
  22.  
  23. function printCities($cities) { //это просто что бы не копипастить завернул.
  24. $temp = function($city) {
  25. return " " . $city["name"] . "(" . $city["population"] . ")";
  26. };
  27.  
  28. echo implode(", ", array_map($temp, $cities)) . ".";
  29.  
  30. echo "\n\n";
  31. }
  32.  
  33.  
  34.  
  35.  
  36. $firstTask = filterByPopulation($cities);
  37. echo "Города с населением больше 20млн:";
  38. printCities($firstTask);
  39.  
  40.  
  41. function sortByPopulation($cities) { //вот тут у меня был затуп
  42. $condition = function ($a, $b) { //пришлось воровать пример с мануала и "переделывать".
  43. if ($a["population"] == $b["population"]) {
  44. return 0;
  45. }
  46. return ($a["population"] > $b["population"]) ? -1 : 1;
  47. };
  48. usort($cities, $condition);
  49. return array_slice($cities, 0, 3);
  50. }
  51.  
  52. $secondTask = sortByPopulation($cities);
  53. echo "Список 3х самых населенных городов по убыванию:";
  54. printCities($secondTask);
  55.  
  56. $test = array_merge($firstTask, $secondTask);
  57. $result = array_column($test, 'country');
  58. $result = array_unique($result);
  59. echo "Они находятся в странах: " . implode(", ", $result). ".";
  60.  
  61.  
  62.  
Success #stdin #stdout 0.02s 24448KB
stdin
Standard input is empty
stdout
Города с населением больше 20млн: Джакарта(30539000),  Токио(37843000),  Шанхай(23416000),  Нью-йорк(20630000),  Дели(24998000),  Мехико(20063000),  Карачи(22123000).

Список 3х самых населенных городов по убыванию: Токио(37843000),  Джакарта(30539000),  Дели(24998000).

Они находятся в странах: Индонезия, Япония, КНР, США, Индия, Мексика, Пакистан.