Rechercher : dans
Par :

Changer le type d'une variable PHP

Dernière réponse le 19 aoû 2008 à 20:59:30 Sochra, le 19 aoû 2008 à 18:47:06 
 Signaler ce message aux modérateurs

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 ?

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « Changer le type d'une variable PHP » dans :
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
VBScript - Types de données VoirLe type de données Variant Le type d'une variable correspond à la manière dont l'ordinateur stocke la variable en mémoire, c'est-à-dire la succession de 0 et de 1 dans les cases mémoire. VBScript comprend un type de données par défaut pouvant...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...

1

Alain_42, le 19 aoû 2008 à 19:04:08

Ou est le pb ?

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

si tu veux 1632

alors faite:

$nombre3=$nombre1.$nombre2;

Répondre à Alain_42

2

macgawel, le 19 aoû 2008 à 19:05:38

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...

Si tu donnes à celui qui a faim un poisson, tu le nourris pour un jour
Si tu lui apprends à pêcher, tu le nourris pour toujours.

Répondre à macgawel

3

Sochra, le 19 aoû 2008 à 19:10:49
  • +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

Répondre à Sochra

4

macgawel, le 19 aoû 2008 à 19:14:33

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...
Si tu donnes à celui qui a faim un poisson, tu le nourris pour un jour
Si tu lui apprends à pêcher, tu le nourris pour toujours.

Répondre à macgawel

5

Alain_42, le 19 aoû 2008 à 19:16:35
  • +1

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.

Répondre à Alain_42

6

 Sochra, le 19 aoû 2008 à 20:59:30

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 :)

Répondre à Sochra