[PHP] foreach - Fehler

S

SGD-Daniel

Gast
$siteRoot="?link=";
$menuStruct=array(
"Home"=>array("root"=>$siteRoot."0"),
"Über uns"=>array("root"=>$siteRoot."1", "Job"=>$siteRoot."2","Presse"=>$siteRoot."3"),
"So gehts"=>array("root"=>$siteRoot."7"),
"Impressum"=>array("root"=>$siteRoot."8")
);

function test()
{
global ....;

if($PHP_SELF == $menuStruct[0]['root']){
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
}
else{
echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
}
}
} else {
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
}else{
echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
}
foreach($value as $key2=>$value2){
if(array_search($PHP_SELF,$value)){
if($key2 != "root")
if($PHP_SELF == $value2){
echo "<div class=\"link\"><a href=".$value2.">$key2</a></div>\n";
}else{
echo "<div class=\"link\"><a href=".$value2.">$key2</a></div>\n";
}
}
}
}
}
}


echo test($test,$value);


FEHLERMELDUNG:

Warning: Invalid argument supplied for foreach() in Quellpfad on line ??

Was ist an dem Fettgedruckten falsch?
 
Mitunter zu den wichtigsten sachen beim Programmieren ist, dass der Code schön eingerückt wird. Verwende nächstes mal den php-codeblock um den Code zu pasten:
PHP:
$siteRoot="?link=";
$menuStruct=array(
"Home"=>array("root"=>$siteRoot."0"),
"Über uns"=>array("root"=>$siteRoot."1", "Job"=>$siteRoot."2","Presse"=>$siteRoot."3"),
"So gehts"=>array("root"=>$siteRoot."7"),
"Impressum"=>array("root"=>$siteRoot."8")
);

function test()
{
    global ....;

if($PHP_SELF == $menuStruct[0]['root']){
  [b]foreach($menuStruct as $key=>$value){[/b]
    if($PHP_SELF == $value['root']){
       echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
    }
    else{
       echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
    }
  }
} else {
  foreach($menuStruct as $key=>$value){
    if($PHP_SELF == $value['root']){
       echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
    }else{
       echo "<div class=\"link\"><a href=".$value['root'].">$key</a></div>\n";
    }
    foreach($value as $key2=>$value2){
      if(array_search($PHP_SELF,$value)){
        if($key2 != "root")
           if($PHP_SELF == $value2){
              echo "<div class=\"link\"><a href=".$value2.">$key2</a></div>\n";
           }else{
              echo "<div class=\"link\"><a href=".$value2.">$key2</a></div>\n";
           }
      }
    }
  }
}
}


echo test($test,$value);

So nachdem ich den code angekuckt hab, versteh ich zwar was du machen willst, aber noch nicht warum du da nicht weiterkommst.

Benutz die Funktionen var_export() und isset() zum überprüfen, was geau in den Variablen steht, die du gerade verwenden willst:
PHP:
  echo 'variable $menuStruct ist '.((isset($menuStruct) ? 'NICHT' : '').' gesetzt';
  echo '<pre>Inhalt variable $menuStruct: ';var_export($menuStruct);echo '</pre>';
  foreach($menuStruct as $key=>$value){

Dann wirst du merken, dass die Variable menustruct nicht gesetzt ist oder den falschen Wert hat. Dann überprüfst du nochmal deine global-anweisungen und ggf. ob du eventuell die variable überschreibst.
 
Zuletzt bearbeitet:
@Enigma - er hat den Code eingerückt, nur erkennt die Forensoftware das nicht und gibt es genauso aus (siehe Source der gerenderten Forenseite), da Whitespaces im HTML-Text zur Anzeige ignoriert werden >>> PHP-Tags fehlen (wie Du schon erkannt hast).

In Deiner Funktion hast Du ja schön "global ...;" geschrieben - steht denn da auch brav menuStruct drin? Weil: menuStruct liegt nicht im Kontext der Funktion, wenn Du es nicht als global deklarierst, da es außerhalb deklariert wurde!
 
Zurück
Oben