76 votes

Peut-on ajouter des chaînes de caractères aux variables en PHP ?

Pourquoi le code suivant produit-il 0 ?

Il fonctionne très bien avec des nombres au lieu de chaînes de caractères. J'ai un code similaire en JavaScript qui fonctionne également. PHP n'aime-t-il pas += avec les chaînes de caractères ?

<?php
    $selectBox = '<select name="number">';
    for ($i=1; $i<=100; $i++)
    {
        $selectBox += '<option value="' . $i . '">' . $i . '</option>';
    }
    $selectBox += '</select>';

    echo $selectBox;
?>

0 votes

1 votes

Cette question est-elle vraiment un doublon ? La question porte sur l'ajout d'une chaîne de caractères dans un cas particulier, avec une autre question plus spécifique sur le résultat du code.

156voto

Jeremy Banks Points 32470

Cela est dû au fait que PHP utilise le caractère point . pour la concaténation des chaînes de caractères, et non le caractère plus + . Par conséquent, pour ajouter à une chaîne de caractères, il faut utiliser la fonction .= opérateur :

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

20voto

Henrik Points 2271

En PHP utilice .= pour ajouter des chaînes de caractères et non += .

Pourquoi ce résultat est-il de 0 ? [...] Est-ce que PHP n'aime pas += avec les chaînes de caractères ?

+= est un opérateur arithmétique permettant d'ajouter un nombre à un autre nombre. L'utilisation de cet opérateur avec des chaînes de caractères entraîne une conversion automatique de type. Dans le cas de l'OP, les chaînes de caractères ont été converties en nombres entiers de valeur 0 .


En savoir plus sur les opérateurs en PHP :

1voto

Ali Haider Points 11

La syntaxe de PHP est légèrement différente de celle de JavaScript en ce qui concerne la concaténation. Au lieu de (+) plus a (.) period est utilisé pour la concaténation des chaînes de caractères.

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

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X