Задать вопрос
sorry_i_noob
@sorry_i_noob

Почему если в php сложить число и текст, то выведется только число. Текст и число, то все равно только число?

Здравствуйте.
Есть такой код:
echo '123' + 'abc' + '<br>';
echo 'abc' + '123' + '<br>';

В обоих строчках выведется только "123". И при том, на одной строке (до '<br>'не дойдет).
  • Вопрос задан
  • 1640 просмотров
Подписаться 2 Простой 4 комментария
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 4
@vanillathunder
В php + это сложение, конкатинация строк будет ..
echo '123' . 'abc' . '<br>';
echo 'abc' . '123' . '<br>';
Ответ написан
Комментировать
xISRAPILx
@xISRAPILx
Кратко не получится
Всё дело в приведении типов, любая не намберик(состоит только из числовых значений) строка в PHP ровна нулю.
Ответ написан
@rPman
Плюс в php всегда возвращает число. Если хотите объединение как строк, используйте оператор точка '.'.
echo 123.'xxx'.987;

Осторожно так как точка ещё и десятичный разделитель

ещё неплохой вариант использовать автоматическую подстановку значений переменных, если строка в двойных ковычках то $ в строке обрабатывается с заменой на заявление переменной.
$xyz='asd';
echo "\$xyz='$xyz'";

выведет
$xyz='asd'
Ответ написан
Комментировать
Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))
Во первых в php знак "+" означает именно сложение, математическое, для сложения (соединения, или правильнее конкатенации) строк используется оператор точка "." Т.е. в данном случае вы пытаетесь сделать именно математическую операцию. PHP - слаботипизированный язык, он ваши строки '123', 'abc', '<br>', а это именно строки, т.к. все, что заключено в " или ' расценивается как строка, язык пытается привести к числу, и в итоге получаем 123 из перво строки, и нули из последующих, т.к. это невозможно привести к числу, в итоге имеем 123+0+0=123
Ну и во вторых, чтобы получить строку 123abc с переносом строки нужно проводить конкатенацию... например так:
echo 123.'abc'.'<br>';
Или так:
echo '123'.'abc'.'<br>';
В первом случае 123 это число, во втором строка... но результат будет одинаковый
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы