Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Problema con duplicati in array
Forum - PHP - Problema con duplicati in array

Avatar
giocala88 (Normal User)
Expert


Messaggi: 243
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 2:43
Mercoledì, 23/12/2015
Salve ragazzi, mi trovo in una situazione del genere: devo estrarre delle stringhe dal campo filter attraverso una lettura query. Ogni stringa è così strutturata str1, str2, str3, ecc.... A questo punto applico explode:
Codice sorgente - presumibilmente Plain Text

  1. for($i=0; $i<n; $i++){
  2. $explode = array_push($array, explode(',', $filter[$i]['filter']));
  3. }


generando un array così strutturato:
Codice sorgente - presumibilmente Delphi

  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => Dubai
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [0] => Dolomiti
  11.             [1] =>  San Martino di Castrozza
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [0] => Cuba
  17.             [1] =>  Cayo Largo
  18.         )
  19.  
  20.     [3] => Array
  21.         (
  22.             [0] => Salento
  23.             [1] =>  Torre San Giovanni
  24.         )
  25.  
  26.     [4] => Array
  27.         (
  28.             [0] => Capo Verde
  29.         )
  30.  
  31.     [5] => Array
  32.         (
  33.             [0] => Barcellona
  34.             [1] =>  Marsiglia
  35.             [2] => Savona
  36.         )
  37.  
  38.     [6] => Array
  39.         (
  40.             [0] => Polignano
  41.             [1] =>  Pezze di Greco
  42.         )
  43.  
  44.     [7] => Array
  45.         (
  46.             [0] => Sofia
  47.         )
  48.  
  49.     [8] => Array
  50.         (
  51.             [0] => New York
  52.             [1] =>  Los Angeles
  53.             [2] =>  Washington
  54.             [3] =>  Philadelphia
  55.             [4] =>  Las Vegas
  56.         )
  57.  
  58.     [9] => Array
  59.         (
  60.             [0] => Ischia
  61.         )
  62.  
  63.     [10] => Array
  64.         (
  65.             [0] => Lecce
  66.         )
  67.  
  68.     [11] => Array
  69.         (
  70.             [0] => Salento
  71.             [1] =>  Torre San Giovanni (Le)
  72.             [2] =>  Marina di Ugento (Le)
  73.         )
  74.  
  75.     [12] => Array
  76.         (
  77.             [0] => Salento
  78.             [1] =>  Corigliano d\'Otranto (Le)
  79.            [2] =>  Otranto (Le)
  80.        )
  81.  
  82.    [13] => Array
  83.        (
  84.            [0] => Canarie
  85.            [1] =>  Tenerife
  86.            [2] =>  Fuerteventura
  87.        )
  88.  
  89.    [14] => Array
  90.        (
  91.            [0] => Gargano
  92.            [1] =>  Monte Sant\'Angelo (Fg)
  93.         )
  94.  
  95.     [15] => Array
  96.         (
  97.             [0] => Salento
  98.             [1] =>  Ostuni (Br)
  99.         )
  100.  
  101.     [16] => Array
  102.         (
  103.             [0] => Medjougorie
  104.             [1] =>  Croazia
  105.         )
  106.  
  107. )


Avrei bisogno di eliminare i duplicati e ordinarlo in ASC. Come posso fare? In rete ho trovato delle soluzioni del tipo:

Codice sorgente - presumibilmente Plain Text

  1. $input = array_map("unserialize", array_unique(array_map("serialize", $input)));



Ma senza alcun esito. Come posso fare?
Grazie

Ultima modifica effettuata da giocala88 il 23/12/2015 alle 2:50
PM Quote
Avatar
Olekirk91 (Normal User)
Newbie


Messaggi: 4
Iscritto: 16/01/2014

Segnala al moderatore
Postato alle 10:44
Mercoledì, 23/12/2015
Ciao,

spero di aver ben interpretato la tua domanda.

Se non ti interessa mantenere multidimensionale il tuo array puoi fare una cosa di questo genere:

convertire il tuo array in un array semplice :

Codice sorgente - presumibilmente Php

  1. $input = array_flatten($array);
  2. function array_flatten($array) {
  3.   if (!is_array($array)) {
  4.     return FALSE;
  5.   }
  6.   $result = array();
  7.   foreach ($array as $key => $value) {
  8.     if (is_array($value)) {
  9.       $result = array_merge($result, array_flatten($value));
  10.     }
  11.     else {
  12.       $result[$key] = $value;
  13.     }
  14.   }
  15.   return $result;
  16. }



dopo di che eliminare i doppi:

Codice sorgente - presumibilmente Plain Text

  1. $input=array_unique($input, SORT_REGULAR);



e ordinarlo:

Codice sorgente - presumibilmente Plain Text

  1. asort($input);



Spero di esserti stato utile,
Buona giornata.

PM Quote