Changer le type d'une variable PHP [Résolu/Fermé]

Signaler
Messages postés
17
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
21 août 2008
-
Messages postés
1161
Date d'inscription
dimanche 30 août 2009
Statut
Membre
Dernière intervention
22 novembre 2016
-
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 ?

5 réponses

Messages postés
17
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
21 août 2008
1
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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
90
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...
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
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.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
Ou est le pb ?

16+32 est bien égal à 48 il me semble

si tu veux 1632

alors faite:

$nombre3=$nombre1.$nombre2;
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
90
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...

Messages postés
17
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
21 août 2008
1
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 :)
Messages postés
1161
Date d'inscription
dimanche 30 août 2009
Statut
Membre
Dernière intervention
22 novembre 2016
172