Kors Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 Да, была опечатка с "oldprice" так тяжело было сразу написать? Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент. У топик стартера есть лишние условия IF и ELSE, которые по сути не нужны. Это какие конкретно "лишние условия"? Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.Она проявляется уже в случае двух товаров. Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 намек понял, исправил. Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент. Это какие конкретно "лишние условия"? Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.Она проявляется уже в случае двух товаров.Лишние условия, конкретно: else { $compare_price = ''; } Можно объявить переменную до IF if( is_float($compare_price) ) print "<oldprice>".$compare_price."</oldprice>"; В моем примере нет необходимости в этой проверке. И плюс мое решение более компактно = )Каким хотите, таким и пользуйтесь. Я предложил свой вариант ничем не отличающийся от варианта топикстартера, только без лишнего кода. Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 А вообще все это решение можно укатать в одну строчку со всему проверками, допустим: $compare_price = ($p->compare_price > 0)?"\n<oldprice>".round($simpla->money->convert($p->compare_price, $main_currency->id, false),2)."</oldprice>":""; Восприятие кода конечно БЯКА, но пашет быстрее (если сравнивать на уровне мс)Ну и остается только вставить $compare_price, как я показал ранее. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 Теперь ошибка действительно исправлена, поздравляю! Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)... Лишние условия, конкретно: else { $compare_price = ''; } В решении ТС это условие совсем не лишнее, а принципиально важное и нужное. Если его убрать, возникнет та же ошибка, что и в Вашей начальной версии.Смысл, значение и важность подобных моментов обычно разбирают в учебниках и курсах для начинающих программистов.А уж программисты-профессионалы такое распознают сразу... Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 А можно так: $compare_price = ''; if ($p->compare_price > 0) $compare_price = round($simpla->money->convert($p->compare_price, $main_currency->id, false),2); Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 А еще лучше вынести $compare_price = ''; в начало Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 А еще лучше вынести $compare_price = ''; в начало Результат зависит от того, что имеете в виду под "в начало". Может оказаться, что это возврат к начальной ошибке cernos-а... Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 10 января, 2016 Жалоба Поделиться Опубликовано 10 января, 2016 (изменено) Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = ) Изменено 10 января, 2016 пользователем cernos Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 11 января, 2016 Жалоба Поделиться Опубликовано 11 января, 2016 Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = ) Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)...Обычно, если хотят дать второй вариант решения, то хотя бы отдают себе отчет о том, чем новой вариант отличается от имеющегося, отличается ли вообще, и отличается ли в лучшую сторону. Иначе непонятно, в чем смысл... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.