Can you append strings to variables in PHP?
Solution 1
This is because PHP uses the period character .
for string concatenation, not the plus character +
. Therefore to append to a string you want to use the .=
operator:
for ($i=1;$i<=100;$i++)
{
$selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
Solution 2
In PHP use .=
to append strings, and not +=
.
Why does this output 0? [...] Does PHP not like += with strings?
+=
is an arithmetic operator to add a number to another number. Using that operator with strings leads to an automatic type conversion. In the OP's case the strings have been converted to integers of the value 0
.
More about operators in PHP:
Solution 3
PHP syntax is little different in case of concatenation from JavaScript.
Instead of (+) plus
a (.) period
is used for string concatenation.
<?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;
?>
Related videos on Youtube
James
Updated on July 05, 2022Comments
-
James almost 2 years
Why does the following code output 0?
It works with numbers instead of strings just fine. I have similar code in JavaScript that also works. Does PHP not like += with strings?
<?php $selectBox = '<select name="number">'; for ($i=1; $i<=100; $i++) { $selectBox += '<option value="' . $i . '">' . $i . '</option>'; } $selectBox += '</select>'; echo $selectBox; ?>
-
Charles Sprayberry about 12 years
-
Henrik over 4 yearsIs this question really a duplicate? The question asks for appending a string in a special case with a further more specific question about the output of the code.
-
-
John over 2 years
$selectBox = '<select>'; $selectBox += '</select>';
Expands to$selectBox = '<select>' + '</select>';
PHP converts strings to0
if they don't at least begin with numbers. Hence0+0