PHP est vaguement tapé. Ce qui était autrefois un entier peut aussi être une chaîne, par exemple lorsque vous l' echoutilisez (utilisé dans ce que l'on appelle le contexte de chaîne ).
hakre
2
@hakre yes php est vaguement tapé et l'écho afficherait la valeur dans le contexte de la chaîne. Mais cela ne change pas le type de données d'une variable en interne. Par conséquent, strval ($ variable) est correct.
vivek_23
@Vivek: strval()ne change pas non plus en $variableinterne.
2015
2
Je voulais dire $ variable = strval ($ variable);
vivek_23
Réponses:
781
Vous pouvez utiliser la strval()fonction pour convertir un nombre en chaîne.
Du point de vue de la maintenance, il est évident ce que vous essayez de faire plutôt que certaines des autres réponses plus ésotériques. Bien sûr, cela dépend de votre contexte.
$var =5;// Inline variable parsing
echo "I'd like {$var} waffles";// = "I'd like 5 waffles// String concatenation
echo "I'd like ".$var." waffles";// I'd like 5 waffles// Explicit cast
$items =(string)$var;// $items === "5";// Function call
$items = strval($var);// $items === "5";
Bon point. J'ai ajouté quelques fonctions mysql_escape_string pour le nettoyer.
Chris Thompson
6
modifié depuis mysql_escape_string est déconseillé car il ignore charset.
Kzqai
7
@Kzqai pour quiconque regarde cet exemple pour essayer d'éviter les attaques par injection, je dirais abandonner vos tentatives pour échapper aux chaînes et utiliser des instructions préparées
chacham15
22
Après 5 ans, j'ai finalement supprimé l'exemple SQL car il n'était pas nécessaire de répondre à la question et j'ai introduit la confusion.
Chris Thompson
3
Attention!! Si vous passez certains nombres, php les arrondira lors de la conversion en chaîne: strval(0.999999997)retourne 1.
@Jazzerus Si $ var est égal à 0 (zéro), cela devient une chaîne vide. Problématique.
Simon Forsberg
5
La conversion 0en ""n'est peut-être pas mauvaise; cela dépend vraiment de l'application. Cela dit, vous faites valoir un bon argument.
WNRosenberg
2
$ f = 0; echo "$ f"; fonctionne bien avec moi, le zéro reste toujours nul. Je considère donc "$ var" comme une réponse intelligente / utile. L'exécution de 9999999 boucles (chaîne) prend 0,4046459 ... sec tandis que "$ var" prend 0,3725229 ... aucune différence.
Melsi
45
$foo =5;
$foo = $foo ."";
Maintenant, $fooc'est une chaîne.
Mais, vous voudrez peut-être vous habituer au casting. Comme le casting est la bonne façon d'accomplir quelque chose de ce genre:
$foo =5;
$foo =(string)$foo;
Une autre façon consiste à encapsuler entre guillemets:
Tellement incroyablement étrange que nous en avons tous deux choisi 5. De plus, + est java.
karim79
Je pense que vous mélangez votre syntaxe de concaténation entre les langues là-bas.
jason
6
Je pencherais pour le casting, simplement parce que cela rend vos intentions très claires. Le casting n'a qu'un et un seul but: changer de type. Les autres exemples peuvent presque ressembler à des erreurs, dans certains contextes.
Frank Farmer
Travaillé pour moi .. thnx beaucoup
zeetit
10
Il existe plusieurs façons de "convertir" un entier en une chaîne en PHP.
La méthode informatique traditionnelle serait de convertir la variable en chaîne:
$int =5;
$int_as_string =(string) $int;
echo $int .' is a '. gettype($int)."\n";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Vous pouvez également profiter de la conversion de type implicite de PHP et de l'interpolation de chaînes:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string ="$int";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
$string_int = $int.'';
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Enfin, similaire à ce qui précède, toute fonction qui accepte et renvoie une chaîne peut être utilisée pour convertir et entier. Considérer ce qui suit:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string = trim($int);
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Je ne recommanderais pas l'option finale, mais j'ai vu du code dans la nature qui reposait sur ce comportement, alors j'ai pensé le transmettre.
Comme les réponses ici le démontrent bien, oui, il y a plusieurs façons. Cependant, en PHP, vous avez rarement besoin de le faire. La «manière dogmatique» d'écrire PHP est de s'appuyer sur le système de frappe lâche du langage, qui contraindra le type de manière transparente selon les besoins. Pour les valeurs entières, cela est généralement sans problème. Vous devez cependant être très prudent avec les valeurs à virgule flottante.
Je ne pense pas que PHP contraindra un entier à la chaîne tout le temps. Il le fera pour strlen(12345);mais pas pour $x = 12345; echo $x[2];Toutes ces fonctions de casting sont très utiles et beaucoup de programmeurs vérifient de plus en plus leurs types.
Je dirais que cela dépend du contexte. strval () ou l'opérateur de transtypage (chaîne) peuvent être utilisés. Cependant, dans la plupart des cas, PHP décidera de ce qui est bon pour vous si, par exemple, vous l'utilisez avec echo ou printf ...
Une petite remarque: die () a besoin d'une chaîne et ne montrera aucun int :)
Re " chaîne ": littéralement ou le type? Ou autre chose? Pouvez-vous être plus clair (en modifiant votre réponse )?
Peter Mortensen
Merci pour le commentaire @ Peter Mortensen. Le type de retour "STRING" signifie que votre valeur doit être convertie en chaîne dans une nouvelle variable. c'est pourquoi j'ai édité la chaîne
echo
utilisez (utilisé dans ce que l'on appelle le contexte de chaîne ).strval()
ne change pas non plus en$variable
interne.Réponses:
Vous pouvez utiliser la
strval()
fonction pour convertir un nombre en chaîne.Du point de vue de la maintenance, il est évident ce que vous essayez de faire plutôt que certaines des autres réponses plus ésotériques. Bien sûr, cela dépend de votre contexte.
la source
strval(0.999999997)
retourne1
.Il y a plusieurs façons de procéder.
Deux exemples:
Voir le manuel PHP sur les jonglages de types pour en savoir plus.
la source
0
en""
n'est peut-être pas mauvaise; cela dépend vraiment de l'application. Cela dit, vous faites valoir un bon argument.Maintenant,
$foo
c'est une chaîne.Mais, vous voudrez peut-être vous habituer au casting. Comme le casting est la bonne façon d'accomplir quelque chose de ce genre:
Une autre façon consiste à encapsuler entre guillemets:
la source
Il existe plusieurs façons de "convertir" un entier en une chaîne en PHP.
La méthode informatique traditionnelle serait de convertir la variable en chaîne:
Vous pouvez également profiter de la conversion de type implicite de PHP et de l'interpolation de chaînes:
Enfin, similaire à ce qui précède, toute fonction qui accepte et renvoie une chaîne peut être utilisée pour convertir et entier. Considérer ce qui suit:
Je ne recommanderais pas l'option finale, mais j'ai vu du code dans la nature qui reposait sur ce comportement, alors j'ai pensé le transmettre.
la source
Toutes ces réponses sont excellentes, mais elles vous renvoient toutes une chaîne vide si la valeur est zéro.
Essayez ce qui suit:
la source
Utilisation:
Ou cela pourrait être:
Ou:
la source
Il existe de nombreuses façons de conversion possibles:
la source
Vous pouvez soit utiliser l'opérateur point et y concaténer une chaîne (et il sera converti en chaîne):
Ou, plus correctement, vous pouvez simplement taper cast l'entier en une chaîne:
la source
Comme les réponses ici le démontrent bien, oui, il y a plusieurs façons. Cependant, en PHP, vous avez rarement besoin de le faire. La «manière dogmatique» d'écrire PHP est de s'appuyer sur le système de frappe lâche du langage, qui contraindra le type de manière transparente selon les besoins. Pour les valeurs entières, cela est généralement sans problème. Vous devez cependant être très prudent avec les valeurs à virgule flottante.
la source
strlen(12345);
mais pas pour$x = 12345; echo $x[2];
Toutes ces fonctions de casting sont très utiles et beaucoup de programmeurs vérifient de plus en plus leurs types.Vous pouvez simplement utiliser ce qui suit:
la source
Je dirais que cela dépend du contexte. strval () ou l'opérateur de transtypage (chaîne) peuvent être utilisés. Cependant, dans la plupart des cas, PHP décidera de ce qui est bon pour vous si, par exemple, vous l'utilisez avec echo ou printf ...
Une petite remarque: die () a besoin d'une chaîne et ne montrera aucun int :)
la source
L'écho sera donc une chaîne de retour .
la source
est plus rapide que
la source