Dennis: Mehrdimensionales Array durchsuchen - nur über Schleife?

Beitrag lesen

Hi snoot,

$fehler_thema = 1;

if(isset($_GET['thema']))
{
  foreach($index as $topic => $chapters)
  {
    foreach($chapters as $chapter => $none)
    {
      if($_GET['thema'] == $chapter)
      {
        $fehler_thema = 0;
      }
    }
  }
}

  
Wie man dir bereits gesagt hat, kommst du nicht drum rum das Array zu durchlaufen. Da du allerdings einen Key suchst (und keinen Wert), kannst du dir die innere foreach-Schleife sparen:  
  
[ode lang=php]if (isset($\_GET['thema'])) {  
  foreach ($index as $topic => $chapters) {  
    if (isset($chapters[$\_GET['thema']])) {  
      $fehler\_thema = 0;  
      break;  
    }  
  }  
}[/code]  
  
Mit break brichst du dann noch direkt ab, wenn du das passende Unter-Array gefunden hast.  
  
Alternativer Ansatz:  
  
~~~php
$fullIndex = call_user_func_array('array_merge', $index);  
if (isset($fullIndex[$_GET['thema']])) {  
  $fehler_thema = 0;  
}

Viele Grüße,
  ~ Dennis.