次のコードが0を出力するのはなぜですか?
文字列ではなく数字でうまく動作します。 JavaScriptでも同様のコードが動作します。 PHPは文字列で+ =が好きではありませんか?
<?php
$selectBox = '<select name="number">';
for ($i=1; $i<=100; $i++)
{
$selectBox += '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox += '</select>';
echo $selectBox;
?>
これは、PHPが文字列の連結にピリオド文字.
を使用するためであり、プラス文字+
ではありません。したがって、.=
演算子を使用する文字列に追加するには:
for ($i=1;$i<=100;$i++)
{
$selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
PHPでは、.=
ではなく、+=
を使用して文字列を追加します。
なぜこの出力は0ですか? [...] PHPは文字列で+ =が好きではありませんか?
+=
は、ある数値を別の数値に加算する算術演算子です。文字列でその演算子を使用すると、自動型変換が行われます。 OPの場合、文字列は値0
の整数に変換されています。
PHPの演算子の詳細:
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;
?>