Jump to content

<oldprice> Вывод скидки в Яндекс.Маркет


Go to solution Solved by trainracing,

Recommended Posts

Да, была опечатка с "oldprice" так тяжело было сразу написать?

 

Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент.

 

У топик стартера есть лишние условия IF и ELSE, которые по сути не нужны.

 

Это какие конкретно "лишние условия"?

 

Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.

Она проявляется уже в случае двух товаров.

Link to post
Share on other sites

 

Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент.

 

 

Это какие конкретно "лишние условия"?

 

Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.

Она проявляется уже в случае двух товаров.

Лишние условия, конкретно:

else {
$compare_price = '';
}

Можно объявить переменную до IF

if( is_float($compare_price) )
   print "<oldprice>".$compare_price."</oldprice>";

В моем примере нет необходимости в этой проверке.

 

И плюс мое решение более компактно = )

Каким хотите, таким и пользуйтесь. Я предложил свой вариант ничем не отличающийся от варианта топикстартера, только без лишнего кода.

Link to post
Share on other sites

А вообще все это решение можно укатать в одну строчку со всему проверками, допустим:

$compare_price = ($p->compare_price > 0)?"\n<oldprice>".round($simpla->money->convert($p->compare_price, $main_currency->id, false),2)."</oldprice>":"";

Восприятие кода конечно БЯКА, но пашет быстрее (если сравнивать на уровне мс)

Ну и остается только вставить $compare_price, как я показал ранее.

Link to post
Share on other sites

Теперь ошибка действительно исправлена, поздравляю!

 

Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)...

 

 

Лишние условия, конкретно:

else {
$compare_price = '';
}

 

В решении  ТС это условие совсем не лишнее, а принципиально важное и нужное. Если его убрать, возникнет та же ошибка, что и в Вашей начальной версии.
Смысл, значение и важность подобных моментов обычно разбирают в учебниках и курсах для начинающих программистов.
А уж программисты-профессионалы такое распознают сразу...

Link to post
Share on other sites

А еще лучше вынести

$compare_price = '';

 

в начало

 

Результат зависит от того, что имеете в виду под "в начало".  Может оказаться, что это возврат к начальной ошибке cernos-а...

Link to post
Share on other sites

Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = )

Edited by cernos
Link to post
Share on other sites

Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = )

 

Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)...

Обычно, если хотят дать второй вариант решения, то хотя бы отдают себе отчет о том, чем новой вариант отличается от имеющегося, отличается ли вообще, и отличается ли в лучшую сторону. Иначе непонятно, в чем смысл...

Link to post
Share on other sites
×
×
  • Create New...