web-dev-qa-db-fra.com

Pouvez-vous ajouter des chaînes aux variables en PHP?

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

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>';
124
Jeremy Banks

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:

17
Henrik

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;

?>
1
Ali Haider