Php : conversion de variables

Résolu/Fermé
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 30 mars 2009 à 13:26
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 30 mars 2009 à 14:33
Salut.

Je suis à la recherche d'un moyen permettant de convertir un variable de type chaine dans le type qui sera le mieux adapté. (Je travaille en php)

Exemples :

'blabla' => string
'1.57' => float
' 1.57 ' => float
'8' => integer
' 8 ' => integer
'true' => boolean

Si ça ne marche pas avec les tableaux je n'en ferai pas une maladie. :)
Mais j'aimerais surtout que ça distingue les nombres des chaines.
A voir également:

3 réponses

Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
30 mars 2009 à 13:34
Bonjour. Tu es nouveau sous php je suppose =)
Les types de variables ne sont pas nommés en php. Mais tu as des fonctions qui te permettent de vérifier le type de tes variables "isstring" par exemple (ou "is_string", ou encore "isstr" ou "is_str", ça fait quelques temps..).
Je te conseille de faire un tour sur php.fr, tu trouvera la liste des fonctions, et leur utilisation.
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
30 mars 2009 à 13:48
Merci Atapik.

Non, je ne suis plus vraiment nouveau sur php... :(

Mais je ne le prends pas mal, parce que je ne suis pas sûr que tu aies bien compris ce que je recherchais.
(Je n'ai pas du m'exprimer assez clairement)

is_string(' 1.57 ') me retournera true. (tu remarqueras les espaces autour du chiffre)
Or j'aimerais plutôt que mafonction(' 1.57 ') me retourne 1.57

Tu vois la nuance ?
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
30 mars 2009 à 14:33
Ca y est. Je crois que j'ai trouvé une combine.
Il y aura sûrement moyen de faire un code plus propre. Mais j'ai le résultat que je recherchais. C'est l'essentiel.

function bestType($var)
	{
	$var = trim($var) ;

	if ( $var === 'true' || $var === '1' ) $var = true ; // booleenne true
	elseif ( $var === 'false' || $var === '' ) $var = false ; // booleenne false
	else
		{ // entière
		$tmp = $var ;
		settype($tmp,'int') ;
		settype($tmp,'string') ;
		if ( $var === $tmp ) $var = $tmp ;
		else
			{ // décimale
			$tmp = $var ;
			settype($tmp,'float') ;
			settype($tmp,'string') ;
			if ( $var === $tmp ) $var = $tmp ;
			}
		}
		
	return $var ;
	}
0