Подтвердить что ты не робот

Можете ли вы добавить строки в переменные в 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;
?>
4b9b3361

Ответ 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;

?>