variable .=

HD
Invité n'ayant pas de compte PHPfrance

14 juil. 2005, 20:09

Salut
quelle est la difference entre les expressions :

Code : Tout sélectionner

variable =
et

Code : Tout sélectionner

variable .=
merci

Eléphant du PHP | 396 Messages

14 juil. 2005, 20:25

Cela permet , pour des variables contenant des chaines de caractères, de "coller" le contenu.

Ex :

$var = "la ";
$var .= "phrase";

echo $var; affiche "la phrase"

Eléphant du PHP | 396 Messages

14 juil. 2005, 20:27

+=, -=, *= et /= fonctionnent de la même manière, mais pour des données numériques.

Ex :

$var = 2;
$var += 5;

$var vaut 7

Mammouth du PHP | 19672 Messages

14 juil. 2005, 20:27

Attention, .= et non +=
En PHP, le point est un opérateur de concaténation. On va souvent utiliser .= pour construire des chaines en plusieurs étapes en fonction de tel ou tel critère.

Parfois, on commence par mettre une variable avec une chaine vide pour valeur et ensuite avec des boucles ou des structures conditionnelles, on ajoute des morceaux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 543 Messages

14 juil. 2005, 21:22

+= sert quant a lui en javascript, au lieu du .=, mais ce n'est pas ici le sujet :)

Invité
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 03:19

merci a tous
il se trouve que j'ai ce code (qui recupere le titre d'une page) :
<? 

$fp = fopen("http://www%2e%63omm%65ntcamarche%2enet","r"); //lecture du fichier

while (!feof($fp)) { //on parcourt toutes les lignes

  $page .= fgets($fp, 4096); // lecture du contenu de la ligne

} 

$titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre

echo $regs[1]; 

fclose($fp);

?>  
le titre est bien recuperé, sauf que l'erreur (varible page non definie) s affiche, alors que c'est le cas à la ligne :
$page .= fgets($fp, 4096); 
:?:

Mammouth du PHP | 543 Messages

15 juil. 2005, 03:22

oui car page n'est pas defini.

fait comme ceci :

Code : Tout sélectionner

while (!feof($fp)) { //on parcourt toutes les lignes if (!isset($page)) $page=""; $page .= fgets($fp, 4096); // lecture du contenu de la ligne }

@+

Invité
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 04:30

merci bien pour l aide
a+

Mammouth du PHP | 543 Messages

15 juil. 2005, 10:31

De rien bonne continuation ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juil. 2005, 10:35

En fait, ce qu'il est important de comprendre, c'est que quand tu as un .=, +=, ... , qqchose=
$var .= "char";
il faut lire
$var = $var."char";
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Tho
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 15:21

oui car page n'est pas defini.

fait comme ceci :

Code : Tout sélectionner

while (!feof($fp)) { //on parcourt toutes les lignes if (!isset($page)) $page=""; $page .= fgets($fp, 4096); // lecture du contenu de la ligne }

@+
il vaudrait mieux mettre la condition avant la boucle.

Code : Tout sélectionner

if (!isset($page)) $page=""; while (!feof($fp)) { //on parcourt toutes les lignes $page .= fgets($fp, 4096); // lecture du contenu de la ligne }