IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Integer et Is_int.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut Integer et Is_int.
    Salut à tous,

    Je rencontre un petit problème pour reconnaitre si les valeurs que je traite sont bien des integer (entier).

    Je détaille : Je suis entrain de coder une interface web. Dans l'application, je demande à l'utilisateur d'uploader son fichier texte avec ses données à l'intérieur. Il doit s'agir en vérité d'une matrice contenu dans ce fichier.

    Exemple:M=[235 4564 0 456
    345 494 345 34
    948 456 0 596]
    Jusque là tout va bien.

    Je vérifie ensuite, pour chaque valeur dans mon fichier texte, si il s'agit bien d'un entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( is_int($tab[$i])){
    (j'ai effectué d'autres traitement avant (comme recopier les valeurs du fichiers dans un tableau, le mélanger, mais rien qui ne modifie les valeurs des données).
    Et c'est là que commence le problème :

    Si je remplace une valeur du tableau par une lettre,ça passe (par exemple M[1][1]=a).En revanche, si je remplace cette même valeur par (M[1][1]=2a5), il me considére cela comme un entier...
    J'ai essayer de mettre (int) devant chaque valeur pour le transtypage... mais il me reconnait tout comme un integer.

    Si jamais vous avez une idée, je vous remercie d'avance !

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Si je remplace une valeur du tableau par une lettre,ça passe (par exemple M[1][1]=a).En revanche, si je remplace cette même valeur par (M[1][1]=2a5), il me considére cela comme un entier...
    Voilà qui est étrange car:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = '2a5';
    var_dump(is_int($a)); // false
    J'ai essayer de mettre (int) devant chaque valeur pour le transtypage... mais il me reconnait tout comme un integer.
    Tu t'attendais à quoi

    Tu es sûr que ton problème se situe effectivement au niveau du is_int ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut
    J'en suis presque sur oui.

    J'ai testé avec is_numeric. Maintenant j'ai un soucis avec la dernière valeur de chaque ligne dans mon fichier texte car il me dit que ce n'est pas un numérique. Enfaite j'ai vu qu'il y avait un soucis si il y avait un espace après le chiffre (car c'est considéré comme une chaine de caractère et plus un chiffre ou une valeur apparemment).

    Je ne sais pas quel fonction permet d'ignorer le vide d'une fin de ligne dans un fichier (car à chaque fois c'est la dernière valeur de la ligne qui pose problème).

    Merci d'avance !

    PS : mes valeurs sont stockés dans un tableau avec la fonction file :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $matrice=file("./upload/matrice.txt");
    je me dis que normalement... ce problème ne dois pas arriver... mais peut-être qu'il garde un petit espace à la fin... bref, c'est bizarre

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Utilise trim pour enlever les caractères d'espacement en début et fin de chaines.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut
    De cette façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (trim(is_numeric($tab[$i]))){
    Si c'est le cas, cela ne marche pas, pourtant j'ai toujours la meme erreur, je met la 1ere ligne de mon fichier, ainsi que le bout de code qui permet de faire le test avec l'erreur générée, surement que cela sera plus simple.

    Valeurs de la ligne 1 uniquement, 2290 apparait à la fin. (140 en tout):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2636	2241	2725	1971	2555	2319	2491	2457	1975	2288	2122	0	2550	2166	0	2294	2003	2290	0	2403	0	2070	2183	2270	2032	0	2043	1746	2504	2841	2125	2372	1936	0	0	2165	3368	2064	0	1880	1842	0	1857	2067	2752	0	2061	1969	2271	2502	2359	1918	2649	2550	1953	2491	2320	2170	0	2930	2246	2120	2110	1729	1973	2310	1811	2462	2254	2226	3208	1907	0	1748	1908	1996	1998	0	2035	0	2266	1981	1826	3631	2706	2555	2595	2853	2082	2581	2264	2643	2273	0	2306	2639	2493	2818	2573	0	0	2738	2176	0	2273	3253	3006	2568	0	2699	2763	0	2473	2402	2305	2404	2257	2930	2526	2184	2509	0	1955	2078	0	2235	2625	2443	2186	2064	2559	2251	2118	2600	2281	2538	3332	2854	0	2290
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (trim(is_numeric($tab[$i]))){
    	if($tab[$i]!=0 ){
    		$moyenneG1=$moyenneG1+$tab[$i];
    	};	
    }else{
    	echo "$tab[$i]<p>";
    	exit("Erreur de calcul : ".$tab[$i]." n'est pas une valeur numérique.");
    };
    Message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2290
     
    Erreur de calcul : 2290 n est pas une valeur numérique

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 387
    Points
    9 387
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if (is_numeric(trim($tab[$i]))){
    Ou plus proprement et une bonne fois pour toute :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach($tab as $k => $v)
      $tab[$k] = trim($v);

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Points : 94
    Points
    94
    Par défaut
    Merci bcp pour votre aide !
    Il s'agissait bien d'un problème d'espace finalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CONVERSION] Integer to Word ?
    Par ulysse66x dans le forum Langage
    Réponses: 5
    Dernier message: 14/06/2003, 20h38
  2. [debutant] Comment afficher un integer a l'ecran
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 05/06/2003, 20h35
  3. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34
  4. Concaténation de String et Integer
    Par Ingham dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2003, 17h26
  5. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo