web-dev-qa-db-ja.com

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;
?>
56
James

これは、PHPが文字列の連結にピリオド文字.を使用するためであり、プラス文字+ではありません。したがって、.=演算子を使用する文字列に追加するには:

for ($i=1;$i<=100;$i++)
{
    $selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
124
Jeremy Banks

PHPでは、.=ではなく、+=を使用して文字列を追加します

なぜこの出力は0ですか? [...] PHPは文字列で+ =が好きではありませんか?

+=は、ある数値を別の数値に加算する算術演算子です。文字列でその演算子を使用すると、自動型変換が行われます。 OPの場合、文字列は値0の整数に変換されています。


PHPの演算子の詳細:

17
Henrik

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;

?>
1
Ali Haider