Changer le type d'une variable PHP

Résolu/Fermé
Sochra Messages postés 17 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 août 2008 - 19 août 2008 à 18:47
djosfr Messages postés 1163 Date d'inscription dimanche 30 août 2009 Statut Membre Dernière intervention 22 novembre 2016 - 13 déc. 2009 à 22:29
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 ?
A voir également:

5 réponses

Sochra Messages postés 17 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 août 2008 1
19 août 2008 à 19:10
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
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
19 août 2008 à 19:14
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...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 août 2008 à 19:16
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 août 2008 à 19:04
Ou est le pb ?

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

si tu veux 1632

alors faite:

$nombre3=$nombre1.$nombre2;
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
19 août 2008 à 19:05
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...

0
Sochra Messages postés 17 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 21 août 2008 1
19 août 2008 à 20:59
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 :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djosfr Messages postés 1163 Date d'inscription dimanche 30 août 2009 Statut Membre Dernière intervention 22 novembre 2016 191
13 déc. 2009 à 22:29
0