Conversion variable $_POST en String

Mammouth du PHP | 985 Messages

11 mars 2010, 22:26

Bonjour,

Pourquoi ceci n'est pas possible?
<?php
$var = "$_POST['var']";
?>
Car, obligé de faire:
<?php
$var = $_POST['var'];
$var = "$var";
?>
Ensuite, est-il possible de le faire en une seule ligne?

Merci par avance :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 31 Messages

11 mars 2010, 22:44

Bonjour,

J'imagine que tu veux créer une chaine plus "complexe" que "$_POST['var']" ? Parce que sinon les guillemets ne sont pas vraiment utiles.

Pour utiliser une variable entre guillemets elle doit être "simple" (en gros pas un tableau ni un objet). Pour employer le terme savant ça doit être un scalaire. En effet, php ne peut pas savoir si le premier crochet fait partie de la variable ou de la chaîne. Imagine que je veuille écrire "Pomme[50€ le kilo]" (oui je sais, c'est pas donné) avec le code suivant :
<?php
$fruit = 'Pomme'; 
echo "$fruit[50€ le kilo]";
?>
Dans ce cas le crochet ne doit pas faire partie de la variable.

La solution est d'utiliser les accolades :
<?php
$var = "{$_POST['var']}";
?>
Mais personnellement je te conseille cette méthode :
<?php
$var = 'début de la chaîne '.$_POST['var'].' fin de la chaîne';
?>
L'utilisation de simple quotes et du point est plus performante il parait (parce que php ne doit pas analyser les chaînes à la recherche de potentielles variables.

En espérant t'avoir un peu éclairé.

Mammouth du PHP | 985 Messages

11 mars 2010, 22:49

Vi ok merci pour la première partie de ma question, en effet j'oublie toujours les accolades...

Sinon pour la deuxième partie:
$var = (string) $_POST['var'];
Merci :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 31 Messages

11 mars 2010, 22:51

$var = (string) $_POST['var'];
Je ne vois pas trop l'intérêt de la conversion en string. Avec PhP, le typage des variable n'est vraiment pas contraignant. Pourquoi vouloir le caster en string ?

Mammouth du PHP | 985 Messages

11 mars 2010, 23:00

Cela m'évite un test supplémentaire is_string(), et simplifie les opérations ensuite, ne m'occupant plus du type ensuite.
exemple:
Je peux ensuite appliquer les fonctions qui ne fonctionnent pas si la variable est un array()...
Disons que dans certaines conditions, cela simplifie le traitement.
En une ligne, l'affaire est réglée...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.