Bonjour,
J'ai un tableau (array) dans lequel je voudrais retirer les enregistrements qui comporte les caractères "--".
Est-ce possible ?
Merci d'avance
Bonjour,
J'ai un tableau (array) dans lequel je voudrais retirer les enregistrements qui comporte les caractères "--".
Est-ce possible ?
Merci d'avance
Bonjour,
Un petit tour dans les fonctions me fait penser que array_filter devrait répondre à tes attentes.
Pierre
PS : Il y a un certain nombre de fontions interressante sur les tableaux dans la doc, jette un coup d'oeil
Merci pierre, j'avais pensé à cette solution sauf qu'il trouve que "--" n'est pas un argument valide, c'est pourquoi je cherche une autre soluce
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: array_filter() [function.array-filter]: The second argument, '--', should be a valid callback in
Oui c'est possible mais je ne pense pas qu'il y a de fonction te faisant le tous clé en main. Un ensemble de fonction arrivera a ton resultat parce que nous ne savons pas si tu veux des index vides ou non.
Envoyé par lodan
Bien sur que ce n'est pas un argument valide, puisque l'argument attendu est une fonction qui déterminera si l'élement doit être garder ou non.
En gros une fonction dans ce genre :
Faut lire un peu la doc quand même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function AGarder($a) { if ($a == '--' ) return 0; return 1; }
Pierre
Oui pardon, j'avais pas fait attention à la doc trop empresser de faire le test.
Bon effectivement, j'ai fait ceci :Mais ma table requete est pareil avant et après ce traitement, parce ma ligne de tableau est aussi un tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 print_r(array_filter($requete, "AGarder")); function AGarder($a) { if ($a == '------------------' ) return 0; return 1; }
Donc ce n'est pas la solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part Array ( [classe] => 3 [classe_libelle] => DEPENSES COURANTES [categorie] => 11 [categorie_libelle] => PERIODICITE [ss_categorie] => 59 [ss_categorie_libelle] => ------------------ ) [1] => Array ( [classe] => 3 [classe_libelle] => [categorie] => 11 [categorie_libelle] => [ss_categorie] => 43 [ss_categorie_libelle] => Alimentation, Entretien ) [2] => Array ( [classe] => 3 [classe_libelle] => [categorie] => 11 [categorie_libelle] => [ss_categorie] => 48 [ss_categorie_libelle] => Autres ) [3] => Array ( [classe] => 3 [classe_libelle] => [categorie] => 11 [categorie_libelle] => [ss_categorie] => 47 [ss_categorie_libelle] => Cadeaux ) [
En fait, je pense que je vais être obligé d'avoir un tableau en entrée et un tableau en sortie.
Je lis en entrée et si [ss_categorie_libelle]=------------------ alors je n'écris pas en sortie.
Une tite fonction que j'avais faite y'a deja un moment...
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 /* Paramètres : - $tab : (array) un tableau - $value : valeur a effacer du tableau Return : (array) renvoie un nouveau tableau dans lequel ont été effacées toutes les case contenant la valeur $value */ function array_delete($tab, $value) { $ret = array(); foreach($tab as $val) { if($val != $value) {$ret[] = $val;} } return $ret; }
Merci beaucoup gloubi,
J'avais fait un test avec ceciEt ça fonctionne très bien, mais je vais passer ça en function maintenant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 foreach($requete as $ligne) { if($ligne["ss_categorie_libelle"]!='------------------' ) {$requete2[]=$ligne;} }
Voici la fonction inspiré de celle de gloubi
Merci encore et à bientôt sur les posts...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function ArrayDelete($tab, $indice, $value) { $ret = array(); foreach($tab as $val) { if($val["$indice"] != $value) {$ret[] = $val;} } return $ret; }
Petite précision avant que le post ne disparaisse aux oubliettes
Sur des petits tableaux, ce genre de fonctions peut faire l'affaire, mais la fonction array_filter() est compilé et est donc beaucoup plus rapide.
Ne réinventer pas la roue
@+
PS : Il suffisait de modifier ta fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function AGarder($a) { if ($a['ss_categorie_libelle'] == '------------------' ) return 0; return 1; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager