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 :

Fonction rtrim dans un foreach ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre averti
    Femme Profil pro
    Apprentie Ingénieur
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Apprentie Ingénieur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Par défaut Fonction rtrim dans un foreach ne marche pas
    Bonjour,

    J'ai un problème avec mon rtrim. Il ne s'applique que sur la dernière valeur de ma boucle. Quelqu'un aurait-il une piste, svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $l = explode("\n", $body);
            foreach ($l as $i => &$value) {
            	$value = rtrim($value,";");
            	$f = array_map('trim', explode(";", $value));
            	if (!in_array("", $f)){
            		array_push($list, $f);
            	}
            }
    PS , j'ai aussi essayé un de faire cette modif avant la boucle, mais ça ne marche pas non plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            array_walk($l, create_function('&$val', '$val = rtrim($val,\';\'); echo "$val \n";'));

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Pourtant ça fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $a = [
       '    coucou',
       ' laaaalalala    ',
       'gniiiitoutou    ',
    ];
     
    $a = array_map( create_function( '$s', 'return trim( $s );' ), $a );
     
    print_r($a);

  3. #3
    Membre averti
    Femme Profil pro
    Apprentie Ingénieur
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Apprentie Ingénieur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Par défaut
    Je m'excuse de ne pas avoir précisé ce qui ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $value = rtrim($value,";");
    C'est plutot celui là qui ne marche pas. Je veux enlever touts les point virgules supplémentaires de la chaine avant de les passer à l'array_map (qui fera le explode puis trim).

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Peux-tu donner un petit jeu de données ? Genre un tableau de 3/4 entrées en faisant par exemple un var_export() de $l.

  5. #5
    Membre averti
    Femme Profil pro
    Apprentie Ingénieur
    Inscrit en
    Janvier 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Apprentie Ingénieur

    Informations forums :
    Inscription : Janvier 2012
    Messages : 16
    Par défaut
    J'ai fait un var_export dans la boucle juste après le rtrim.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    array (
      0 => '29212COA;29212COA;B+;1x64;100;150000;720;
    ',
      1 => '29212COA;29212BTP;B+;1x64;100;150000;720;
    ',
      2 => '29212COA;29130LPZ;B+;1x64;100;150000;720;
    ',
      3 => '29212COA;29212PZ2;B+;1x64;100;150000;720;
    ',
      4 => '29019BRC;29019BRC;B+;1x64;95;150000;720;
    ',
      5 => '29019BRC;29019BRN;B+;1x64;95;150000;720;
    ',
      6 => '29019BRC ;29019BRO;B+;1x64;95;150000;720;
    ',
      7 => '29019BRC;29019BRE;B+;1x64;95;150000;720;
    ',
      8 => '29061GNO;29061GNO;B+;1x64;100;150000;720;
    ',
      9 => '29061GNO;  29019BC4;B+;1x64;100;150000;720;
    ',
      10 => '22278SBR;22278SBR;B+;1x64;95;25000;720;
    ',
      11 => '22278SBR;22106LGX;B+;1x64;95;25000;720;
    ',
      12 => '22278SBR;22187PIN;B+;1x64;95;25000;720',
    )
    A part la dernière occurrence, ils ont tous un point virgule à la fin...

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Comme tu peux le voir sur ton var_export(), le ; n'est pas le dernier caractère des autres lignes de ton tableau. Tu as un caractère retour chariot juste après. Donc le rtrim() ne fonctionne pas, ce qui est normal.

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

Discussions similaires

  1. [MySQL] pas d'erreur mais l'insertion dans la base ne marche pas bien
    Par info_sara dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/05/2008, 14h55
  2. Fonction sql Round(N,n) ne marche pas ?
    Par quanou dans le forum Access
    Réponses: 1
    Dernier message: 15/05/2008, 09h07
  3. PB VBA : ecriture dans une feuille active => marche pas !
    Par MeHo_ dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/01/2008, 16h47
  4. fonction onClick= dans IE6 ok Firefox fonctionne pas
    Par rejy_l'Édimestre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/08/2007, 21h58
  5. requête dans acces qui ne marche pas...
    Par sam01 dans le forum Access
    Réponses: 3
    Dernier message: 14/12/2005, 16h48

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