• Super User

    ciclo sulle occorrenze Array (fino a che esistono)

    Salve! 😄

    Allora ho un nuovo problema da sottoporre:

    Ho un array di x valori, qui un esempio:

    array(nome1 => Bisonte, nome2, => Leopardo, nome3 => Zebra, nome4 => Moscerino, continente => Africa, tipologia => animali );
    

    Per quanto riguarda i valori "nomex", dove x sta per un numero, non sono fissi: nell'esempio sopracitato l'array arriva ad un massimo di 4 occorrenze di nome.
    Ma può comunque succedere che possa arrivare anche a val100 insomma! 🙂

    Quello che mi serve è una funzione che faccia un ciclo sull'array, prenda tutti quei valori che iniziano per "nome" PIU' il numero.

    Mi raccomando una cosa: non so e non saprò quanti saranno in totale i nomi, quindi ho bisogno di una sorta di foreach sull'occorrenza "nome"+numero.

    Spero di essermi spiegato, che fatica 😞


  • ModSenior

    Non puoi eventualmente passare come parametro gia il limite massimo?


  • User Attivo

    Io farei una cosa del genere:

    • con array_keys ottengo un vettore di tutte le chiavi
    • filtro l'array per ottenere solo quelli che corrispondono al pattern desiderato
    • con il foreach li passo uno ad uno

    Se mi viene in mente qualcosa di più efficiente te lo scrivo... 😉

    edit: ci sarebbe stato l'array_map, ma faresti gli stessi passaggi.
    Ti ho scritto questa funzione, ma non l'ho testata.
    Dovrebbe prendere in ingresso un'espressione regolare da verificare sulle chiavi del vettore e l'array originale e restituire un vettore delle sole coppie chiave/valore "buone".

    
    function filtra($pattern,$array) {
      $keys=preg_grep($pattern,array_keys($array));
      $arr=array();
      foreach ($keys as $key)
        $arr[$key]=$array[$key];
      return $arr;
    }