ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
228
228
EMPFEHLEN
-
Ich dachte eigentlich, dass PHP 5 automatisch referenziert. Daher bin ich über das Ergebnis dieser rekursiven Funktion irritiert:
Ausgabe:PHP-Code:<?php
$data[1]['pid']=0;
$data[1]['url']='STARTSEITE';
$data[2]['pid']=1;
$data[2]['url']='news';
$data[6]['pid']=2;
$data[6]['url']='2006';
$id=6;
$ergebnis = find_parent($id,$data);
print_r($ergebnis);
function find_parent($id,$array){
$menupath = array();
if($id==1){
$menupath[$id] = $array[$id]['url'];
}else{
$menupath[$id] = $array[$id]['url'];
find_parent($array[$id]['pid'],$array);
}
return $menupath;
}
?>
Code :1
[6] => 2006
Es sollte doch aber das herauskommen:
Code :1 2 3
[6] => 2006 [2] => news [1] => STARTSEITE
Hat jemand eine Idee dazuGeändert von NTDY (08.12.11 um 16:12 Uhr)
-
Liegt daran, dass du direkt nach der ID 6 suchst, hab dir das mal a wenig geändert
Schleifen wirken wunder
PHP-Code:<?php
$data[1]['pid']=0;
$data[1]['url']='STARTSEITE';
$data[2]['pid']=1;
$data[2]['url']='news';
$data[3]['pid']=2;
$data[3]['url']='2006';
//Anzahl der Eintäge
$anz="3";
//Werte durchlaufen
for($id = 1; $id <= $anz; $id++)
{
$ergebnis = find_parent($id,$data);
print_r($ergebnis);
}
function find_parent($id,$array){
$menupath = array();
if($id==1){
$menupath[$id] = $array[$id]['url'];
}else{
$menupath[$id] = $array[$id]['url'];
find_parent($array[$id]['pid'],$array);
}
return $menupath;
}
?>
-
Muss man ja nicht machen. Ich kann ja auch eine Referenz auf menupath legen und die Variable immer mitschleifen, aber ich frage mich wieso ich referenzieren muss, wenn ich doch in PHP5 darauf verzichten können sollte:
PHP-Code:<?php
$data[1]['pid']=0;
$data[1]['url']='STARTSEITE';
$data[2]['pid']=1;
$data[2]['url']='news-and-updates';
$data[6]['pid']=2;
$data[6]['url']='news-2006';
$id=6;
$ergebnis = find_parent($id,$data,$result);
echo "<pre>";
print_r($ergebnis);
echo "</pre>";
function find_parent($id,$array,&$menupath){
if($id==1){
$menupath[$id] = $array[$id]['url'];
}else{
$menupath[$id] = $array[$id]['url'];
find_parent($array[$id]['pid'],$array,$menupath);
}
return $menupath;
}
?>
-
Hi,
Du verwirfst den Rückgabewert von "find_parent" der rekursiven Aufrufe.PHP-Code:<?php
$data[1]['pid']=0;
$data[1]['url']='STARTSEITE';
$data[2]['pid']=1;
$data[2]['url']='news';
$data[6]['pid']=2;
$data[6]['url']='2006';
$id=6;
$ergebnis = find_parent($id,$data);
print_r($ergebnis);
function find_parent($id,$array){
$menupath = array();
if($id==1){
$menupath[$id] = $array[$id]['url'];
}else{
$menupath[$id] = $array[$id]['url'];
find_parent($array[$id]['pid'],$array);
}
return $menupath;
}
?>
Ein array_merge sollte das Problem beheben.
Code php:1 2 3 4 5 6 7 8 9 10
function find_parent($id,$array){ $menupath = array(); if($id==1){ $menupath[$id] = $array[$id]['url']; }else{ $menupath[$id] = $array[$id]['url']; $menupath = array_merge($menupath, find_parent($array[$id]['pid'],$array)); } return $menupath; }
Gruß Kyoya StefanOracle Certified MySQL 5 Professional Developer
Zend Certified PHP 5.3 Engineer
Vorträge, Webinare, etc im Mayflower - Blog
-
Mh. Okay. Sind doch schöne Varianten hier geworden
Ähnliche Themen
-
imap_fetchbody gibt nichts zurück / welche sections gibt es?
Von bauchinj im Forum PHPAntworten: 1Letzter Beitrag: 30.09.11, 21:22 -
[PHP/MySQL] Profile gibt nur ersten eintrag aus?
Von thehacker im Forum PHPAntworten: 10Letzter Beitrag: 30.07.11, 18:55 -
strstr() gibt nicht den gewünschten/erwarteten Wert zurück
Von srusso im Forum PHPAntworten: 2Letzter Beitrag: 01.02.09, 14:22 -
preg_match_all gibt keinen Wert zurück!?
Von Duxias im Forum PHPAntworten: 1Letzter Beitrag: 20.03.08, 17:56 -
MyVBQL: RecordCount gibt falschen Wert zurück
Von robbatse im Forum .NET ArchivAntworten: 1Letzter Beitrag: 06.07.04, 10:01





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren