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 :

Supprimer des valeurs d'un tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut Supprimer des valeurs d'un tableau
    Bonjour à tous,

    Je cherche à faire à supprimer toutes les valeurs vide de ce tableau. Pour sa j'utilise le unset avec array_search mais sa ne fonctionne pas j'ai l'impression...

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    unset($matches[array_search(" ", $matches)]);
    unset($matches[array_search(" ", $matches)]);
    unset($matches[array_search("> <", $matches)]);
    print_r($matches);
    Array
    (
    [1] => Array
    (
    [0] => ><
    [1] =>
    )

    [2] => Array
    (
    [0] => >&nbsp;<
    [1] => &nbsp;
    )

    [3] => Array
    (
    [0] => ><
    [1] =>
    )

    [4] => Array
    (
    [0] => ><
    [1] =>
    )

    [5] => Array
    (
    [0] => ><
    [1] =>
    )

    [6] => Array
    (
    [0] => ><
    [1] =>
    )

    [7] => Array
    (
    [0] => >SEPTEMBRE 2010<
    [1] => SEPTEMBRE 2010
    )....
    Si quelqu'un aurait une idée, je suis preneuse ^^

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Array <- 1ère dimension
    (
    [1] => Array <- 2ème dimension
           (
           [0] => ><
           [1] =>
           )
    }
    Ici, on remarque que chaque élément du tableau $matches contient un tableau, donc c'est un tableau à 2 dimensions, et non 1 dimension, c'est pour ça que ça ne fonctionne pas.

    Puis on remarque aussi que le 1ère élément n'y est plus, celui de l'indice 0.
    A mon avis, il existait à sa création, c'est qu'il a très certainement été supprimé par 1 des unset().
    Mais il n'aurait pas dû être supprimé, cependant, la suppresion c'est effectié car la fonction array_search() a dû retourner false.
    False étant interprété comme 0, l'indice 0 a été supprimé.
    Attention donc à ce piège, et c'est pour cela que la doc (pour cette fonction) explique qu'il faut utiliser === pour savoir si c'est false ou l'indice 0 qui est retourné.


    Il te faudrait parcourir chaque élément en boucle, la 1ère dimension pour ensuite rechercher dans le tableau de la 2ème dimension si les valeurs que tu teste sont présents ou pas (attention donc à différencier false et 0).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut
    Merci pour ta réponse.

    Par contre je ne sais pas comment faire ce que tu me conseille à savoir la boucle qui va parcourir le tableau et ensuite tester avec le array_search. Aussi je me demande ou mettre le ===

    Peut tu me donner un exemple, je trouve pas avec le manuel, simplement le message de mise en garde...

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Pour faire la boucle sur $matches, et bien foreach().
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut
    Ba j'ai essayé de faire ce que tu me conseille mais sa marche pas...

    Tu peux me dire ce que je fais mal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    foreach ($matches as $tab) {
     
    	for ($i=1; $i<=2; $i++) {
     
    	$indice = array_search(" ", $matches);
     
    	if ($indice !=false) {
    	   unset($tab[$indice][$i]);
    	}
    	}
    }
    ?>

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Essai comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach ($matches as $key => $tab) {
    	$indice = array_search(" ", $tab);
     
    	if ($indice !== false) {
    		//
    	}
    }
    Théoriquement, il n'y a pas besoinde faire 2 boucles.
    Puis la recherche doit ce faire sur la 2ème dimension, donc $tab, c'est elle qui contient les valeur (&nbsp; etc ...)
    Puis pour le false, faut faire !== (et non !=), qui inclus une vérification sur la valeur et le type.

    Par contre j'ai vonlontaire supprimé le unset(), car finalement, j'en sais rien si le but recherché est de supprimer l'élément de la 1ère ou la 2ème dimension, là c'est à toi de voir.
    Par contre, si tu veux faire une suppression, il faudra l'appliquer sur $matches, surtout pas sur $tab, car $tab est une nouvelle variable, elle ne fait pas partie de $matches.
    Rajouter la clé ($key) au foreach() te seras nécessaire (voir code).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

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

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Supprimer des valeurs d'un tableau
    Par Trax31 dans le forum C
    Réponses: 8
    Dernier message: 30/05/2013, 12h27
  3. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  4. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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