Можете ли вы добавить строки к переменным в PHP? - PullRequest
54 голосов
/ 29 января 2012

Почему следующий код выводит 0?

Отлично работает с числами вместо строк. У меня есть подобный код в JavaScript, который также работает. Разве PHP не нравится + = со строками?

<?php
    $selectBox = '<select name="number">';
    for ($i=1; $i<=100; $i++)
    {
        $selectBox += '<option value="' . $i . '">' . $i . '</option>';
    }
    $selectBox += '</select>';

    echo $selectBox;
?>

Ответы [ 3 ]

121 голосов
/ 29 января 2012

Это потому, что PHP использует символ точки . для конкатенации строк, а не символ плюса +. Поэтому для добавления к строке вы хотите использовать оператор .=:

for ($i=1;$i<=100;$i++)
{
    $selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
17 голосов
/ 23 января 2016

В PHP используйте .= для добавления строк , а не +=.

Почему этот вывод 0? [...] Разве PHP не нравится + = со строками?

+= - это арифметический оператор для добавления числа к другому числу. Использование этого оператора со строками приводит к автоматическому преобразованию типов. В случае OP строки были преобразованы в целые числа со значением 0.


Подробнее об операторах в PHP:

1 голос
/ 05 ноября 2018

Синтаксис PHP мало отличается в случае конкатенации от JavaScript.Вместо (+) plus a (.) 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;

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...