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 :

str_replace dans un array multi dimension


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 77
    Points : 44
    Points
    44
    Par défaut str_replace dans un array multi dimension
    Bonjour,

    Je suis en plein dans les arrays et j'ai remarqué quelque chose.
    ne marche pas avec un array de plus d'une dimension

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Array ( 
    	[0] => Array ( 
    		[label] => [value] => ) 
    	[1] => Array (
    		[value] => 100 [label] => Small ) 
    	[2] => Array (
    		[value] => 99 [label] => Medium )
    	[3] => Array (
    		[value] => 98 [label] => Large ) 
            [4] => Youpi
    )
    Si je veux remplacer youpi tout va bien mais par contre pour Medium cela ne marche pas et je ne sais pas pourquoi.

    J'ai fait des recherches sur internet mais je n'ai pas trouvé de réponse à ma question.

    Quelqu'un peut il m'éclairer ?

    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 44
    Points
    44
    Par défaut
    Allo,

    Voici ce que j'ai trouvé dans la doc de php :
    http://ca.php.net/str_replace, tu vas voir le commentaire de moz667 at gmail dot com, le 21-May-2009 04:49 :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php 
    /* 
    This is a function for made recursive str_replaces in an array 
    */ 
    function recursive_array_replace($find, $replace, &$data) { 
        if (is_array($data)) { 
            foreach ($data as $key => $value) { 
                if (is_array($value)) { 
                    recursive_array_replace($find, $replace, $data[$key]); 
                } else { 
                    $data[$key] = str_replace($find, $replace, $value); 
                } 
            } 
        } else { 
            $data = str_replace($find, $replace, $data); 
        } 
    } 
     
    $a = array(); 
    $a['a'] = "a"; 
    $a['b']['a'] = "ba"; 
    $a['b']['b'] = "bb"; 
    $a['c'] = "c"; 
    $a['d']['a'] = "da"; 
    $a['d']['b'] = "db"; 
    $a['d']['c'] = "dc"; 
    $a['d']['d'] = "dd"; 
     
    echo "Before Replaces"; 
    print_r($a); 
     
    recursive_array_replace("a", "XXXX", $a); 
     
    echo "After Replaces"; 
    print_r($a); 
    ?>
    Il me semble que c'est exactement ce que tu cherches, non?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 77
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup pour cette réponse sa marche très bien,

    quelqu'un peut il aussi me dire pourquoi cela ne marche pas :

    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
    /* Array ( 
    	[super_attribute] => Array ( 
    		[272] => 22 
    		[525] => 100 
    	) 
     )  */
     
    $data['super_attribute'][525] = $taille_bis[$i];
    if ($i = 3) {
    echo 'Taille 1 : <br />';
    echo $taille_bis[1];
    echo 'Taille 2 : <br />';
    echo $taille_bis[2];
    echo 'Taille 3 : <br />';
    echo $taille_bis[3];
    echo 'var $i<br />';
    echo $i;
    echo 'ce qui devrait être égal à "Taille_3" dans cet exemple<br />';
    echo $data['super_attribute'][525];
    return; }
    en debug j'obtiens ceci

    Taille 1
    100
    Taille 2
    99
    Taille 3
    98
    Var $i
    3
    ce qui devrait être égal à "Taille_3" dans cet exemple
    100

    pour moi 100 n'est pas égal à 98 !
    Je ne comprends pas ce qui se passe

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    peut-être que tu voulais écrire

    = -> affectation

    == -> comparaison
    Pourfendeur de singletons en croisade

  5. #5
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 77
    Points : 44
    Points
    44
    Par défaut
    Merci, effectivement ..

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

Discussions similaires

  1. Méthode push dans un Array à plusieurs dimensions
    Par thibane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/04/2008, 10h42
  2. array multi niveau dans un form attaché a plusieurs modèles
    Par Acropole dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 23/12/2007, 15h33
  3. Réponses: 1
    Dernier message: 21/09/2007, 14h42
  4. [Tableaux] recherche dans un tableau multi dimension
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2007, 14h27
  5. Réponses: 3
    Dernier message: 06/10/2006, 15h46

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