За последние 24 часа нас посетили 15208 программистов и 1671 робот. Сейчас ищет 791 программист ...

Помогите с задачками

Тема в разделе "Сделайте за меня", создана пользователем RushOur, 21 мар 2017.

  1. RushOur

    RushOur Новичок

    С нами с:
    21 мар 2017
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте , помогите решить задачки (желательно с пояснениями).

    1)

    $names = array(

    array('id' => 2, 'name' => 'Фрэнк'),

    array('id' => 3, 'name' => 'Чак'),

    array('id' => 7, 'name' => 'Алиса'),

    array('id' => 10, 'name' => 'Кэрол'),

    array('id' => 15, 'name' => 'Боб'),

    ...

    );

    $sort = array(3, 15, 2, 7, 10, ...);


    Написать функцию sortNames($names, $sort=false).

    Функция должна возвращать отсортированный массив $names:

    - по id в порядке указанному в $sort;

    - по name в алфавитном порядке, когда $sort не указан.


    Примечание:

    Использовать функцию usort


    2)

    $path = '/catalog/sneakers/new-balance/';


    Написать функцию getSlugs($path), которая будет:

    - проверять при помощи регулярного выражения соответствие $path строке,

    состоящей из латинских строчных и заглавных букв, цифр и символов «-», «_», «/»;

    - возвращать массив типа array('catalog', 'sneakers', 'new-balance') или false в случае несоответствия.


    3)

    Написать функцию для форматированного вывода цен

    priceFormat($price, $format, $separator=',', $decimals=0, $decimalsPoint='.')

    при которой:

    priceFormat(15500.15, '# руб.', ' ') = '15 500 руб.'

    priceFormat(1399.9, '$#', ',', 2) = '$1,399.90'


    Примечание:

    Использовать функцию number_format
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    У тебя решение задач прописано в примечаниях, ты в курсе? Загугли чтоль функции, которые там описаны. Задания простые как три апельсина. Соберись, позорно с таким не справиться.
     
  3. RushOur

    RushOur Новичок

    С нами с:
    21 мар 2017
    Сообщения:
    5
    Симпатии:
    0
    Помоги с 1ой , не знаю что писать функции , что бы она сортировала.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Покажи, какие наработки есть, и где затык для начала. Потому как тут все по-русски написано, да еще и с примерами.
     
  5. RushOur

    RushOur Новичок

    С нами с:
    21 мар 2017
    Сообщения:
    5
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. //Написать функцию sortNames($names, $sort=false).
    4. //Функция должна возвращать отсортированный массив $names:
    5. //- по id в порядке указанному в $sort;
    6. //- по name в алфавитном порядке, когда $sort не указан.
    7.  
    8. //Примечание:
    9. //Использовать функцию usort
    10. $names = array(
    11.     array('id' => 2,  'name' => 'Фрэнк'),
    12.     array('id' => 3,  'name' => 'Чак'),
    13.     array('id' => 7,  'name' => 'Алиса'),
    14.     array('id' => 10, 'name' => 'Кэрол'),
    15.     array('id' => 15, 'name' => 'Боб'),
    16. );
    17.  
    18. //function sortNames($names, $sort=false){
    19. //if ($sort == true){
    20. //  return $sort;
    21. //}
    22. //}
    23.  
    24. $sort = array(3, 15, 2, 7, 10);
    25.  
    26. function array_sort($names, $sort=false){
    27.  
    28. }
    29.  
    30. usort($sort,"array_sort");
    31.  
    32. foreach ($names as $array){
    33. foreach ($array as $id=> $name){
    34.  
    35.   echo $id . $name ."<br>";
    36. }
    37. }
    38. ?>
    я просто хз что писать именно в функции сортНеймс.
    У меня даже вывод походу кривой через форич в конце.
     
    #5 RushOur, 22 мар 2017
    Последнее редактирование модератором: 22 мар 2017
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Нуу...все напутал, поспешил.
    1) usort принимает сортируемый массив и коллбек. Ты в нее отдал массив с индексами. Но тебе же не его надо сортировать?
    2) Почитай с расстановкой, как оно работает. Там суть в том, что тебе в функцию коллбек придут две ячейки массива. И ты, только тебе известным способом, должен решить, какой из них больше, какой меньше, либо что они равны. И вернуть -1, 1 или 0 в соответствующих случаях. Это просто чтобы usort поняла, по какому принципу ты бы рассортировал все. То есть тебе в коллбеке надо просто сказать, что есть что. А она уже сама отсортирует все.
    3) Вывод по-быстрому можно организовать через var_dump($var);
     
  7. RushOur

    RushOur Новичок

    С нами с:
    21 мар 2017
    Сообщения:
    5
    Симпатии:
    0
    ок , спс за советы. В течении дня попробую , отпишусь.
     
  8. RushOur

    RushOur Новичок

    С нами с:
    21 мар 2017
    Сообщения:
    5
    Симпатии:
    0
    PHP:
    1. $names = array(
    2.     array('id' => 2,  'name' => 'Фрэнк'),
    3.     array('id' => 3,  'name' => 'Чак'),
    4.     array('id' => 7,  'name' => 'Алиса'),
    5.     array('id' => 10, 'name' => 'Кэрол'),
    6.     array('id' => 15, 'name' => 'Боб'),
    7. );
    8.  
    9. $sort = array(3, 15, 2, 7, 10);
    10.  
    11. function array_sort($names, $sort=false){
    12.   if ($names == $sort) {
    13.          return 0;
    14.      }
    15.      return ($names < $sort) ? -1 : 1;
    16. }
    17.  
    18. usort($names,"array_sort");
    19. var_dump ($names);

    ВОТ я нашел пример где -1 и 1 .
    я так понимаю надо как то соеденить айдишники вложенных массивов с массивом сорт, но хз как.
     
    #8 RushOur, 22 мар 2017
    Последнее редактирование модератором: 22 мар 2017
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Для начала разберись, что у тебя в коде.
    К примеру:
    Код (Text):
    1. $names == $sort
    Ты что с чем сравниваешь конкретно?
    Ты используешь array_sort как коллбэк для usort. То есть usort будет вызывать эту функцию. И в параметры она передает не твои массивы, а два элемента, которые надо сравнить и сказать, какой из них по-твоему больше.

    Это раз.

    Тебе нужны отдельные сортировки для двух случаев. Это два.
    Выбор того, какая сортировка должна использоваться, в зависимости от наличия массива $sort в параметрах, должна производить третья функция.

    Гляди. Ты в нее передаешь массив для сортировки и массив индексов. Или без массива индексов.
    В зависимости от наличия массива индексов твоя функция запускает сортировку с таким-то коллбэком.