[Php-it] Ricercare "figlio" in un array

Domenico L. domenico.lorusso at pleiade.it
Tue Feb 6 09:47:25 CET 2007


Cristiano Verondini ha scritto:
>
>> Ora questa è la funzione che dovrebbe tornare il riferimento... non
>> l'ho ancora testata... voi cosa ne dite va?
>
>    Io userei un po' di ricorsione :)
mah... in realtà era stato il mio primo pensiero, poi siccome il match 
mi ritorna un array mi sembrava più semplice l'iterazione

cmq la funzione non andava l'ho modificata:

$arr=array();
$out='';
seekArray ($arr,$out,'ciao[mioa][bao]',true);
$out='ok';
echo "<h5>Result</h5>";
var_dump($arr);
var_dump($out);

function seekArray(&$var, &$out, $niddle, $create=false){
    #->supponiamo ciao[miao][bao]
    $v=&$var;
    $step=array();
    $er='#^(\w+)((\[\w+\])*)$#sD';
    preg_match_all($er,$niddle,$m);
    if (empty($m[1][0]) and !$create) return false;
    $step[]=$m[1][0];#->ciao


    if (!empty($m[2][0])){
        $niddle=$m[2][0];#->[miao][bao]
        $er ='#\[(\w+)\]#sD';
        preg_match_all($er,$niddle,$m);
        if (count($m[1])) $step=array_merge($step,$m[1]);
    }
    $n=count($step);
    for ($i=0;$i<$n;$i++){
        $niddle=$step[$i];
        if (!isset($v[ $niddle ]))
            if (!$create) return false;
            else $v=array( $niddle =>0);
        $v = &$v[ $niddle ];

    }
    $out=&$v;
    return true;

}

Però ottengo questo output:


          Result

array(1) { #->var_dump($arr);
  ["ciao"]=>
  &array(1) {
    ["mioa"]=>
    &array(1) {
      ["bao"]=>
      int(0)
    }
  }
}

string(2) "ok" #->var_dump($out);


non mi è chiaro cosa succede come si fa a capire a cosa puntano le 
variabili?!?! Perché mi stampa &array ???


ciao


-- 
Domenico L.                             icq: 645 44 861

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



More information about the Php-it mailing list