За последние 24 часа нас посетили 62012 программистов и 1748 роботов. Сейчас ищут 1059 программистов ...

Исключение для массива

Тема в разделе "PHP для новичков", создана пользователем anempadest, 15 июл 2015.

  1. anempadest

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

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Есть массив с величинами наценок. Наценка определяется в зависимости от того, с какого склада идёт продажа. Например, если продажа с третьего склада, то наценка 80%:
    Код (PHP):
    1. $margin = array(50, 60, 80, 100); 
    Иногда бывают исключения для данного товара. Например, если продажа пошла со второго склада, для которого обычно действует наценка 60%, то применять наценку 100%.
    Поэтому в функцию, которая вычисляет цену, посылаю аргументом массив с исключениями:
    Код (PHP):
    1. $exception = array(2 => 100); 
    Как теперь организовать расчёт цены?
    Варианты:
    1) Предварительно переопределить $margin с учётом $exception. То есть:
    - выбрать элементы из $exception;
    - по ключу, который теперь индекс, изменить значение в $margin.
    Только $margin у меня global, поэтому я не хочу в него вносить изменения. Вероятно, нужно создать промежуточный массив с наценками.
    2) Определять наценку при формировании цены для каждого склада.
    - в ходе перебора складов (их 4 всегда), определить индекс склада;
    - по индексу, который теперь ключ, определить новую наценку из $exception.

    Вопросы:
    1) Как на PHP написать каждый из вариантов?
    2) Какой вариант лучше?

    Добавлено спустя 5 минут 50 секунд:
    Написал по второму варианту:
    Код (PHP):
    1. $m = $margin[$i];
    2. foreach($exception as $exNum => $exMar){
    3.     if($exNum == ($i + 1)){
    4.         $m = $exMar;
    5.     };
    6. }; 
    Есть ли какие-то встроенные функции по манипуляции массивами для данного примера?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    "лучше" это всегда субъективная оценка. поэтому не претендую ни на что, вот мои субъективные "мета-правила":

    правила надо перебирать порядке убывания приоритета. как только что-то подошло к нашим данным, возвращаем итог.

    не надо жалеть букв, главное чтобы код оставался понятным: функции с внятными именами будут легче в сопровождении, чем какие-то загадочные наборы цифр в массивах.
     
  3. anempadest

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

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Согласен, тогда поделитесь практическим опытом.
    В функцию приходит массив, состоящий из величин торговых наценок. Я перебираю массив и переменной присваиваю значение элемента массива.
    Как бы вы назвали такой Массив и такую Переменную с элементом массива? Как это делают профессионалы?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Однажды ученик спросил у мастера:
    — Долго ли ждать перемен к лучшему? В чем смысл жизни и что такое любовь?
    — А мне почем знать? Я обычный токарь, отойди от шпинделя, — ответил мастер.
     
  5. anempadest

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

    С нами с:
    17 янв 2012
    Сообщения:
    42
    Симпатии:
    0
    Однажды у сороконожки разболелись ноги. Она пошла к мудрой сове за советом:
    - Тебе нужно стать белкой. У белки всего две ноги, а не сорок, и твоя боль уменьшится в двадцать раз! - Ответила Сова.
    - Отлично! Но как мне стать белкой? Я ведь сороконожка!
    - Это не ко мне! Я решаю только стратегические проблемы.