Existe-t-il un moyen de convertir un entier en une chaîne en PHP?
strval()
ne change pas non plus en $variable
interne.
Existe-t-il un moyen de convertir un entier en une chaîne en PHP?
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.
$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";
strval(0.999999997)
retourne 1
.
Il y a plusieurs façons de procéder.
Deux exemples:
$str = (string) $int;
$str = "$int";
Voir le manuel PHP sur les jonglages de types pour en savoir plus.
0
en ""
n'est peut-être pas mauvaise; cela dépend vraiment de l'application. Cela dit, vous faites valoir un bon argument.
$foo = 5;
$foo = $foo . "";
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:
$foo = 5;
$foo = (string)$foo;
Une autre façon consiste à encapsuler entre guillemets:
$foo = 5;
$foo = "$foo"
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.
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:
$v = 0;
$s = (string)$v ? (string)$v : "0";
Vous pouvez soit utiliser l'opérateur point et y concaténer une chaîne (et il sera converti en chaîne):
$integer = 93;
$stringedInt = $integer . "";
Ou, plus correctement, vous pouvez simplement taper cast l'entier en une chaîne:
$integer = 93;
$stringedInt = (string) $integer;
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.
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 :)
$amount = 2351.25;
$str_amount = "2351.25";
$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount); //string
L'écho sera donc une chaîne de retour .
$integer = 93;
$stringedInt = $integer.'';
est plus rapide que
$integer = 93;
$stringedInt = $integer."";
echo
utilisez (utilisé dans ce que l'on appelle le contexte de chaîne ).