Ricercare all'interno di un array a più livelli ricorsivamente

Ciao a tutti,

conoscete una funzione in php che mi riesce a trovare un elemento all'interno di un array complesso, rispondendomi che l'elemento esiste ed il valore è x?!

grazie tante

 :bye:

inviato 10 anni fa
ulisse
X 0 X

in_arra() lo hai provato?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ciao,

si ho provato ma trova semplicemente un elemento in un array non multidimensionale.

grazie

 :bye:

risposto 10 anni fa
ulisse
X 0 X

Beccati questo script appena sfornato:

<?php
$array = array('nome'=>'test','dati'=>array('recapito'=>array('via'=>'dante','CAP'=>'test')));

function ricerca_ricorsiva($item, $key, $parametri)
{
   if($item == $parametri[0]) $parametri[1][] = $key;
}

// 'test', il valore da cercare
$parametri = array('test',array());

array_walk_recursive($array, 'ricerca_ricorsiva',&$parametri);

// l'esito della ricerca
print_r($parametri[1]);
?>
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni !!

Mi sapresti dire se alla funzione posso passare il nome della chiave e non il valore?!

La funzione in php dovrebbe trovare una chiave, rispondendomi che il valore della chiave è x?!

Ps: Vale solamente per PHP5 sigh!

 :bye:

risposto 10 anni fa
ulisse
modificato 10 anni fa
X 0 X

Ciao,

si ho provato ma trova semplicemente un elemento in un array non multidimensionale.

grazie

 :bye:

scusami per l'informazione errata

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ti serve per PHP4?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Si Gianni.

risposto 10 anni fa
ulisse
X 0 X
<?php
$array = array('nome'=>'test','dati'=>array('recapito'=>array('via'=>'dante','CAP'=>'test','super'=>array('anni'=>'34','345'))));

function ricerca_ricorsiva($array, $needle)
{
   foreach ($array as $key => $value)
   {
      if(is_array($value))
      {
         $risultato = ricerca_ricorsiva($value,$needle);
         if($risultato) return $risultato;
      }         
      else
      {
         if ($key === $needle) return $value;
      }         
   }
   
   return false;
}

// ricerca_ricorsiva($array, $chiave);
// restituisce il valore della prima occorrenza della $chiave cercata. False altrimenti
echo ricerca_ricorsiva($array,'anni');
?>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie Mille!!  O0

risposto 10 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda