Changer le type d'une variable PHP
Résolu
Sochra
Messages postés
17
Statut
Membre
-
djosfr Messages postés 1163 Date d'inscription Statut Membre Dernière intervention -
djosfr Messages postés 1163 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai comme qui dirait... un petit problème.
J'ai une variable de type String dans mon script PHP. Cette variable contient bien un nombre mais je n'arrive pas à convertir cette variable afin de pouvoir faire des calcul avec le nombre contenu dans cette variable :s
Par exemple, comment faire pour que
<?php
$nombre1="16";
$nombre2="32";
$nombre3=$nombre1+$nombre2;
echo $nombre3;
?>
affiche 48? J'ai essayé de convertir mes variables de deux manières différentes.
$nombre3=settype($nombre1,"integer")+settype($nombre2,"integer");
ET
$nombre3=( int ) $nombre1+( int ) $nombre2;
Mais aucune de ces deux manières marchent. Est il possible de convertir un type String en Int sans se retrouver avec une variable ayant pour valeur 0? Si oui, comment ?
J'ai comme qui dirait... un petit problème.
J'ai une variable de type String dans mon script PHP. Cette variable contient bien un nombre mais je n'arrive pas à convertir cette variable afin de pouvoir faire des calcul avec le nombre contenu dans cette variable :s
Par exemple, comment faire pour que
<?php
$nombre1="16";
$nombre2="32";
$nombre3=$nombre1+$nombre2;
echo $nombre3;
?>
affiche 48? J'ai essayé de convertir mes variables de deux manières différentes.
$nombre3=settype($nombre1,"integer")+settype($nombre2,"integer");
ET
$nombre3=( int ) $nombre1+( int ) $nombre2;
Mais aucune de ces deux manières marchent. Est il possible de convertir un type String en Int sans se retrouver avec une variable ayant pour valeur 0? Si oui, comment ?
Configuration: Windows XP Firefox 3.0.1
5 réponses
-
J'utilise la version 5 de PHP et non ça ne fais pas 48 car mes deux variables ne sont pas de type int qui permet l'addition de deux variables mais de type String, les chaines de caractères
-
Bonjour.
Pourtant, même dans la version 5, php est ce que l'on appelle un langage faiblement typé.
En clair :
<?php $foo = 1 + "10.5"; // $foo est du type float (11.5) $foo = 1 + "-1.3e3"; // $foo est du type float (-1299) $foo = 1 + "bob-1.3e3"; // $foo est du type integer (1) $foo = 1 + "bob3"; // $foo est du type integer (1) $foo = 1 + "10 petits cochons"; // $foo est du type integer (11) $foo = 1 + "10 gros cochons"; // $foo est du type integer (11) $foo = "10.0 cochons " + 1; // $foo est du type integer (11) $foo = "10.0 cochons " + 1.0; // $foo est du type float (11) ?>
Fais un echo des variables que tu additionnes, histoire de vérifier qu'elles correspondent bien à des entiers...
-
Tiens je t'ai trouvé ça sur le site du club d'entraide des développeurs:
Les fonctions intval(), floatval() (ou doubleval) permettent de convertir, respectivement, une chaîne en un nombre entier et à virgule flottante.
Exemple d'utilisation :
$chaine = '5';
echo $nombre = intval($chaine) + 2;
echo '<br />';
echo $nombre = (int) $chaine + 2;
echo '<br /><br />';
$chaine = '5.532';
echo $nombre = floatval($chaine) + 2;
echo '<br />';
echo $nombre = (float) $chaine + 2;
echo '<br /><br />';
Rappel : Les variables PHP ont un type dynamique. Et donc on peut se passer de ces fonctions pour effectuer des calculs. Mais l'utilisation de ces fonctions, pour effectuer un cast, peut s'avérer utile.
-
-
Ou est le pb ?
16+32 est bien égal à 48 il me semble
si tu veux 1632
alors faite:
$nombre3=$nombre1.$nombre2; -
Bonjour.
tu pourrais donner le code réel ? Et préciser la version de php que tu utilises ?
Parce que je viens de tester (sous php 4) :<?php $nombre1="16"; $nombre2="32"; $nombre3=$nombre1+$nombre2; echo $nombre3; ?>
M'affiche bien 48...
-
Des espaces s'étaient inscrusté dans mes variables.
Il n'y a donc plus aucun problème j'ai pu changer le type de mes variables tout bêtement.
Merci quand même a tous pour ces renseignements :) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
une réf pour PHP5 : https://www.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
a+