За последние 24 часа нас посетили 22276 программистов и 1030 роботов. Сейчас ищут 627 программистов ...

Нужна помощь новичку, с сортировкой массива.

Тема в разделе "Сделайте за меня", создана пользователем gringo, 30 ноя 2019.

  1. gringo

    gringo Новичок

    С нами с:
    30 ноя 2019
    Сообщения:
    4
    Симпатии:
    0
    Всем привет.
    Я новичок в PHP, стараюсь вникнуть и понять (кстати форум помогает) в задания и их решения. Но иногда сталкиваюсь с тем что нужна помощь а спросить некого. Ну и похоже что мой навык гуглить, еще не достиг такого уровня, чтоб находить решения самому. Получил задание а как решить не знаю.
    Собственно задание: отсортировать массив по цифрам.
    Если есть у кого желание помочь буду очень благодарен.

    $market = ["clothes" => [
    "shirt" => [22 => ["black", "brown"]],
    "jumpers"=> [34 => ["christmas jumpers" ,"cable jumpers"]],
    "Men's Cardigans" => [21 => ["cotton cardigan", "oversized cardigan", "cardigan in black"]],
    "Women's Coats" => [20 => ["Faux Fur coats", "Winter Coats"]],
    "Women's Dresses" => [1 => ["Evening Dresses", "Maxi dresses", "Party Dresses"]]
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Для начала его нужно привести в человекочитаемый вид:
    PHP:
    1. $market = [
    2.     "clothes" => [
    3.         "shirt" => [
    4.             22 => ["black", "brown"]
    5.         ],
    6.         "jumpers"=> [
    7.             34 => ["christmas jumpers" ,"cable jumpers"]
    8.         ],
    9.         "Men's Cardigans" => [
    10.             21 => ["cotton cardigan", "oversized cardigan", "cardigan in black"]
    11.         ],
    12.         "Women's Coats" => [
    13.             20 => ["Faux Fur coats", "Winter Coats"]
    14.         ],
    15.         "Women's Dresses" => [
    16.             1 => ["Evening Dresses", "Maxi dresses", "Party Dresses"]
    17.         ]
    18.     ]
    19. ];
    (Пару скобочек закрыл я. На сколько понимаю, он так должен выглядеть)
    А теперь я тебе подскажу, а дальше думай сам.
    Нам нужно перебрать массив и найти самое маленькое число. Затем, самое маленькое из тех, что остались и так далее, пока не закончатся числа. Как бы ты сортировал, если бы это был массив [22, 34, 21, 20, 1] ?
    Попробуй сначала сделать это.
     
    gringo нравится это.
  3. gringo

    gringo Новичок

    С нами с:
    30 ноя 2019
    Сообщения:
    4
    Симпатии:
    0
    "Как бы ты сортировал, если бы это был массив [22, 34, 21, 20, 1] ?"
    Так?:
    $a = [22, 34, 21, 20, 1];
    sort ($a);
    var_dump ($a);
    Результат выполнения команды
    array(5) {
    [0]=>
    int(1)
    [1]=>
    int(20)
    [2]=>
    int(21)
    [3]=>
    int(22)
    [4]=>
    int(34)
    }
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    ну в реальной жизни да :)
    но от тебя, думаю, требуется написать свою сортировку
     
  5. gringo

    gringo Новичок

    С нами с:
    30 ноя 2019
    Сообщения:
    4
    Симпатии:
    0
    но от тебя, думаю, требуется написать свою сортировку[/QUOTE]

    Понимаю что нужно написать свою, но пока не понимаю как.
    Спасибо за подсказки и советы.
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Я же написал как :)
     
    gringo нравится это.
  7. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @gringo, набери в гугле "сортировка пузырьком алгоритм"
     
    gringo нравится это.
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Лучше уточнить: это учебное задание, или "просто надо сделать"?
    Если учебное, то надо алгоритм сортировки изучить/выбрать. Иначе - есть функция uasort(), например.
     
    gringo нравится это.
  9. gringo

    gringo Новичок

    С нами с:
    30 ноя 2019
    Сообщения:
    4
    Симпатии:
    0
    Просто надо сделать, с целью - чтоб я понял как это работает. Изначально я думал что найду готовые примеры (в сети), перепишу их, разложу, сам себе разжую. Ну знаете как в уч.заведении, когда преподаватель решает задачу на доске, затем дает похожее домашнее задание чтоб закрепить пройденный материал.
    Кстати да, я как раз подошел к этой функции (uasort), почитаю про нее, постараюсь вникнуть в то как она работает.
     
  10. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    С имеющимися исходными данными есть два момента:
    в качестве исходного массива передавать не весь $market, а $market['clothes']
    в пользовательской функции сравнения необходимо сравнивать размеры, которые представляют собой ключи массива.
    Для получения первого ключа массива в php 7.3, например, есть функция array_key_first(), в ином случае можно воспользоваться советами, приведёнными в "примечаниях".
     
    gringo нравится это.