[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