fork(1) 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. array_map(function($city) {
  25. echo " ", $city["name"] . "(" . $city["population"] . ")";
  26. }, $cities);
  27. echo "\n\n";
  28. }
  29.  
  30.  
  31.  
  32.  
  33. $firstTask = filterByPopulation($cities);
  34. echo "Города с населением больше 20млн:";
  35. printCities($firstTask);
  36.  
  37.  
  38. function sortByPopulation($cities) { //вот тут у меня был затуп
  39. $condition = function ($a, $b) { //пришлось воровать пример с мануала и "переделывать".
  40. if ($a["population"] == $b["population"]) {
  41. return 0;
  42. }
  43. return ($a["population"] > $b["population"]) ? -1 : 1;
  44. };
  45. usort($cities, $condition);
  46. return array_slice($cities, 0, 3);
  47. }
  48.  
  49. $secondTask = sortByPopulation($cities);
  50. echo "Список 3х самых населенных городов по убыванию:";
  51. printCities($secondTask);
  52.  
  53. $test = array_merge($firstTask, $secondTask);
  54. $result = array_column($test, 'country');
  55. $result = array_unique($result);
  56. echo "Они находятся в странах: " . implode(", ", $result). ".";
  57.  
  58.  
  59.  
Success #stdin #stdout 0.02s 24448KB
stdin
Standard input is empty
stdout
Города с населением больше 20млн: Джакарта(30539000) Токио(37843000) Шанхай(23416000) Нью-йорк(20630000) Дели(24998000) Мехико(20063000) Карачи(22123000)

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

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