Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1729 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] arry_unique multidimentional + index d'array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] arry_unique multidimentional + index d'array

n°2051374
flashub
que du bon
Posté le 24-01-2011 à 12:33:29  profilanswer
 

Bonjour,
 
j'ai un tableau :  

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => coucou/1234
  6.             [1] => coucou/1234
  7.             [2] => blalal/coucou/1234
  8.             [3] => coucou/9876
  9.             [4] => coucou/9876
  10.             [5] => coucou/4567
  11.             [6] => blalal/coucou/9876
  12.             [7] => bla/coucou/4567       
  13.         )
  14.     [1] => Array
  15.         (
  16.             [0] => coucou
  17.             [1] => coucou
  18.             [2] => blalal
  19.             [3] => coucou
  20.             [4] => coucou
  21.             [5] => coucou
  22.             [6] => blalal
  23.             [7] => bla
  24.         )
  25.     [2] => Array
  26.         (
  27.             [0] => 1234
  28.             [1] => 1234
  29.             [2] => 1234
  30.             [3] => 9876
  31.             [4] => 9876
  32.             [5] => 4567
  33.             [6] => 9876
  34.             [7] => 4567           
  35.         )
  36.     [3] => Array
  37.         (
  38.             [0] =>
  39.             [1] =>
  40.             [2] =>
  41.             [3] =>
  42.             [4] =>
  43.             [5] =>
  44.             [6] =>
  45.             [7] =>           
  46.         )
  47.     [4] => Array
  48.         (
  49.             [0] =>
  50.             [1] =>
  51.             [2] =>
  52.             [3] =>
  53.             [4] =>
  54.             [5] =>
  55.             [6] =>
  56.             [7] =>           
  57.         )
  58. )


Je souhaite en faire un array_unique en regardant les valeurs du Array ( [2] => Array
un truc du genre :

Code :
  1. $monarray=array_unique_custom($monarray[2]);


et donc ça doit me sortir un array_unique en enlevant les valeurs dépendantes de cet index :  

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => coucou/1234           
  6.             [1] => coucou/9876           
  7.             [2] => coucou/4567                 
  8.         )
  9.     [1] => Array
  10.         (
  11.             [0] => coucou         
  12.             [1] => coucou
  13.             [2] => coucou                     
  14.         )
  15.     [2] => Array
  16.         (
  17.             [0] => 1234           
  18.             [1] => 9876           
  19.             [2] => 4567                 
  20.         )
  21.     [3] => Array
  22.         (
  23.             [0] =>
  24.             [1] =>
  25.             [2] =>                 
  26.         )
  27.     [4] => Array
  28.         (
  29.             [0] =>
  30.             [1] =>
  31.             [2] =>                     
  32.         )
  33. )


Je sais pas si c'est clair ?  
Il doit y avoir plein d'exemples mais j'ai du mal à les trouver...
En plus j'ai beaucoup de valeur et il me faudrait la fonction/méthode la plus performante/rapide.
 
Merci


Message édité par flashub le 24-01-2011 à 13:12:00
mood
Publicité
Posté le 24-01-2011 à 12:33:29  profilanswer
 

n°2051395
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 24-01-2011 à 14:02:55  profilanswer
 

avec la méthode in_array(<valeur>, <tableau> ) et une boucle, tu devrais t'en sortir :)


---------------
:o
n°2051478
flashub
que du bon
Posté le 24-01-2011 à 16:59:16  profilanswer
 

Ydalb a écrit :

avec la méthode in_array(<valeur>, <tableau> ) et une boucle, tu devrais t'en sortir :)


il y aurait toujours moyen de faire comme tu le dis mais ce qui est compliqué c'est que c'est uniquement dans l'Array [2] que je souhaite comparer les valeurs et supprimer les autres valeurs des Array qui en dépendes Array[0],Array[1],... De sorte que j'ai bien $monarray[2][1]=9876 et $monarray[0][1]=coucou/9876 (ou $monarray[0][1]=blalal/coucou/9876 peu importe)
Ce doit être courant comme demande mais je n'arrive pas à trouver. Et puis je cherche la fonction/méthode la plus performante/rapide. Avec le minimum de boucle.

n°2051502
flashub
que du bon
Posté le 24-01-2011 à 20:32:42  profilanswer
 

j'ai déjà trouvé ces deux lignes :  
$monarray[2]=array_unique($monarray[2]);
$monarray[2]=array_values($monarray[2]);.
qui donne :  
# Array
# (
#     [0] => Array
#         (
#             [0] => coucou/1234
#             [1] => coucou/1234
#             [2] => blalal/coucou/1234
#             [3] => coucou/9876
#             [4] => coucou/9876
#             [5] => coucou/4567
#             [6] => blalal/coucou/9876
#             [7] => bla/coucou/4567        
#         )
#
#     [1] => Array
#         (
#             [0] => coucou
#             [1] => coucou
#             [2] => blalal
#             [3] => coucou
#             [4] => coucou
#             [5] => coucou
#             [6] => blalal
#             [7] => bla
#         )
#
#     [2] => Array
#         (
#             [0] => 1234            
#             [1] => 9876            
#             [2] => 4567                  
#         )
#    # [3] => Array
#         (
#             [0] =>
#             [1] =>
#             [2] =>
#             [3] =>
#             [4] =>
#             [5] =>
#             [6] =>
#             [7] =>            
#         )
#
#     [4] => Array
#         (
#             [0] =>
#             [1] =>
#             [2] =>
#             [3] =>
#             [4] =>
#             [5] =>
#             [6] =>
#             [7] =>            
#         )
#
# )
 
Je suis sûr qu'une fonction existe pour faire en sorte que tout soit cohérent... Pas trouver.
idées ?

n°2051517
flashub
que du bon
Posté le 24-01-2011 à 21:50:53  profilanswer
 

flashub a écrit :

j'ai déjà trouvé ces deux lignes :  
$monarray[2]=array_unique($monarray[2]);
$monarray[2]=array_values($monarray[2]);.


bon j'ai trouvé une façon de faire en relisant mon post précédent !  
 

Code :
  1. $notot=count($monarray[0]);
  2.     $monarray[2]=array_unique($monarray[2]);
  3.     for($i=0;$i<=$notot;$i++) {
  4.       if (empty($monarray[2][$i])) {
  5.      
  6.           unset ($monarray[0][$i]);
  7.           unset ($monarray[1][$i]);
  8.           unset ($monarray[3][$i]);
  9.           unset ($monarray[4][$i]);
  10.       }
  11.     }
  12.     $monarray=array_values($monarray);


J'avais pas vraiment cherché, je reste persuader qu'il existe une Fonctions sur les tableaux
mais ça marche comme ça.
si je trouve une meilleure écriture ou La fonction, je reviendrai ici compléter ce post.  
 
Merci Ydalb tu m'as permis d'avancer quand même.
 :)  
Note : je préfère foreach mais j'ai essayé vite fait : foreach($monarray as $key => $i) {    // mais ça n'a pas fonctionné

n°2051634
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 25-01-2011 à 12:35:42  profilanswer
 

Au plaisir :)


---------------
:o
n°2052109
flashub
que du bon
Posté le 26-01-2011 à 17:26:26  profilanswer
 

C'est bien mais c'est pas suffisant...
Y-a-t'il un moyen tout d'abord de supprimer les arrays vides du tableau ?
Peut-être faut-il que j'explose $monarray en plusieurs et que je fasse la correspondance des deux pour ne garder que :  

Code :
  1. Array
  2. (
  3.      [0] => Array
  4.          (
  5.              [0] => coucou/1234
  6.              [1] => coucou/1234
  7.              [2] => blalal/coucou/1234
  8.              [3] => coucou/9876
  9.              [4] => coucou/9876
  10.              [5] => coucou/4567
  11.              [6] => blalal/coucou/9876
  12.              [7] => bla/coucou/4567       
  13.          )
  14.     [1] => Array
  15.          (
  16.              [0] => 1234
  17.              [1] => 1234
  18.              [2] => 1234
  19.              [3] => 9876
  20.              [4] => 9876
  21.              [5] => 4567
  22.              [6] => 9876
  23.              [7] => 4567         
  24.          )
  25. )


Je suis perdu pour rendre ce tableau exploitable quelque soit le nombre d'array et la position des valeurs que je dois rendre unique...


Message édité par flashub le 26-01-2011 à 17:28:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] arry_unique multidimentional + index d'array

 

Sujets relatifs
Problème array en phpProblème mysql fetch array [SOLVED]
Index sur plusieurs clefsRegex tableau et array
Problème au lancement index.phppermet de rechercher une valeur unique dans une table
Requête SQL pour un unique idDebug -> Notice php contant dans Array
[Solved] boost::unique_lock sur un shared_lock[Javascript] Tableau de fonctions et Array.prototype
Plus de sujets relatifs à : [PHP] arry_unique multidimentional + index d'array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR