Pourquoi le code suivant génère-t-il 0?
Cela fonctionne avec des nombres plutôt que des chaînes. J'ai un code similaire en JavaScript qui fonctionne aussi. Est-ce que PHP ne ressemble pas à + = avec des chaînes?
<?php
$selectBox = '<select name="number">';
for ($i=1; $i<=100; $i++)
{
$selectBox += '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox += '</select>';
echo $selectBox;
?>
En effet, PHP utilise le caractère de période .
Pour la concaténation de chaînes, et non le caractère plus +
. Par conséquent, pour ajouter à une chaîne, vous souhaitez utiliser la .=
Opérateur:
for ($i=1;$i<=100;$i++)
{
$selectBox .= '<option value="' . $i . '">' . $i . '</option>';
}
$selectBox .= '</select>';
Dans PHP ), utilisez .=
pour ajouter des chaînes et non pas +=
.
Pourquoi cette sortie 0? [...] Est-ce que PHP ne ressemble pas à + = avec des chaînes?
+=
est un opérateur arithmétique qui permet d’ajouter un nombre à un autre nombre. L'utilisation de cet opérateur avec des chaînes conduit à une conversion de type automatique. Dans le cas du PO, les chaînes ont été converties en entiers de la valeur 0
.
Plus d'informations sur les opérateurs en PHP:
La syntaxe PHP est peu différente en cas de concaténation à partir de JavaScript. Au lieu de (+) plus
a (.) period
est utilisé pour la concaténation de chaînes.
<?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;
?>