Can you append strings to variables in PHP?

207,653

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;

?>
Share:
207,653

Related videos on Youtube

James
Author by

James

Updated on July 05, 2022

Comments

  • James
    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
      Charles Sprayberry about 12 years
    • Henrik
      Henrik over 4 years
      Is 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
    John over 2 years
    $selectBox = '<select>'; $selectBox += '</select>'; Expands to $selectBox = '<select>' + '</select>'; PHP converts strings to 0 if they don't at least begin with numbers. Hence 0+0