Хм.. подобное редко где увидишь, спасибо будем знать. Но сам факт почем оно так себя видет для меня остался загадкой =) _________________ Я не волшебник. Я всего лишь учусь =)
Magnum
Практика кодинга на PHP показывает, что всегда лучше расставить скобки при арифметике в конкатенации И не только с числами - но и с переменными - долго потом будете искать, в чем проблема... _________________ До выхода LiteDiary 0.3.0:парам-пам-пам-пам! Она уже здесь!
Ну теории я и практика малость всегда отличаются. Вот так и здесь. В теории ожидается один ответ, а на практике получаем совсем иное =)
Ладно бы если оно поступало так со всеми действиями в примере, а то ж нет, ему не понравилось сложение и вычитание =)
Вполне вероятно, что это баг самого PHP. Как говорится такой вариант не исключен =) _________________ Я не волшебник. Я всего лишь учусь =)
Это не баг. Так и должно быть, ведь операция конкатенации имеет приоритет перед сложением и вычитанием (в случае отсутствия скобок). Это как в арифметике - сначала умножение, а потом сложение. Конкретно в вашем случае конкатенация приводит к образованию строки, а уже к этой строке вы пытаетесь прибавить/отнять число 3, что неправильно - типы разные, и PHP просто добавляет 3 или -3 к полученной ранее строке. Чтобы была именно арифметика, вам нужно заключить сложение / вычитание в скобки (как вам уже здесь ответили). В таком случае PHP сначала выполнит 5 - 3 (то есть операцию с числами, а не строками), а затем получившееся число 2 присоединит к заданной текстовой строке с помощью конкатенации. А с делением у вас всё получилось сразу, потому как деление 5 на три - это по сути умножение (5 умножить на 1/3), а конкатенация - логическое сложение. Умножение по приоритету выше сложения (опять же, как в арифметике), и PHP без всяких скобок всё делает так, как надо. Таким образом, всё верно и логично, никаких багов. _________________ Любителям и знатокам географии | Помощь по химии онлайн