Можете ли вы добавить строки в переменные в PHP?
Почему следующий код выводит 0?
Он работает с числами вместо строк просто отлично. У меня есть подобный код в JavaScript, который также работает. Разве PHP не нравится + = со строками?
<?php
$selectBox = '<select name="number">';
for ($i=1; $i<=100; $i++)
{
$selectBox += '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox += '</select>';
echo $selectBox;
?>
Ответы
Ответ 1
Это связано с тем, что PHP использует символ периода .
для конкатенации строк, а не символ плюса +
. Поэтому для добавления к строке вы хотите использовать оператор .=
:
for ($i=1;$i<=100;$i++)
{
$selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
Ответ 2
В PHP используйте .=
Для добавления строк, а не +=
.
Почему этот вывод 0? [...] PHP не любит + = со строками?
+=
- это арифметический оператор для добавления числа к другому числу. Использование этого оператора со строками приводит к автоматическому преобразованию типов. В случае OP строки были преобразованы в целые числа со значением 0
.
Подробнее об операторах в PHP:
Ответ 3
Синтаксис PHP немного отличается в случае конкатенации от JavaScript. Вместо (+) plus
(.) period
используется для конкатенации строк.
<?php
$selectBox = '<select name="number">';
for ($i=1;$i<=100;$i++)
{
$selectBox += '<option value="' . $i . '">' . $i . '</option>'; // <-- (Wrong) Replace + with .
$selectBox .= '<option value="' . $i . '">' . $i . '</option>'; // <-- (Correct) Here + is replaced .
}
$selectBox += '</select>'; // <-- (Wrong) Replace + with .
$selectBox .= '</select>'; // <-- (Correct) Here + is replaced .
echo $selectBox;
?>