Loading...
Knightwalker avatar Knightwalker 38 Точки

03. Courses | Associative Arrays | PHP

Нещо не успявам да намерия къде точно се получава проблема. Виждам че и други хора са взели точно 20/100 на тая задача. Пълня масивите, сортирам, но нещо изпускам някъде явно. Оценявам ако някой сподели на PHP, C# или JS как я е решил и къде са тея 20 точки.

<?php

$sofuniCourses = [];
$input = "";

while (true) {
  $input = readline();
  if ($input == "end") { break; }
  $inputArr = explode(" : ", $input);
  $courseName = $inputArr[0];
  $studentName = $inputArr[1];

  if (!key_exists($courseName, $sofuniCourses)) {
    $sofuniCourses[$courseName] = [];
  }
  $sofuniCourses[$courseName][] = $studentName;

}

arsort($sofuniCourses);

foreach ($sofuniCourses as $courses => $course) {

  echo $courses . ": " . count($course) . PHP_EOL;
  asort($course);

  foreach ($course as $student) {
    echo "-- " . $student . PHP_EOL;
  }

}

?>

 

Тагове:
0
Fundamentals Module
willystyle avatar willystyle 2472 Точки
Best Answer

Проблема ти е с първото сортиране arsort($sofuniCourses);

Това сортира масив в обратен ред, запазвайки връзката между ключовете и стойностите, но в случая стойностите на масива са също масиви, а как PHP сравнява масиви, не съм сигурен, но не е по дължина..

Затова ползвай сортиране на масив използвайки потребителска функция за сравнение, като запазва индексите - uasort().

Ако се затрудниш с функцията компаратор, това работи:

uasort($sofuniCourses, function ($a, $b) {return (count($b) - count($a));});

1
Knightwalker avatar Knightwalker 38 Точки

Евала. В интерес на истината така и не разбрах самите user sort функций как се правят.. ще трябва да им обърна внимание понеже винаги е по добре да си мислиш сам начини за сортиране. Мерси : )

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.