foreach Problem...

S-lord

Mitglied
PHP:
<?
switch($_GET['action']){
$array = array("a", "b", "c");
foreach ($array as $var) {
case $var:
includes("includes/" . $var . ".php");
break;
}
}
?>

Bei diesen Code tritt folgende Fehlermeldung auf:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_CASE or T_DEFAULT or '}' in C:\xampp\htdocs\includes2.php on line 3

Ich wollte es realisieren, dass somit je nach dem wie $_GET['action'] ausschaut die cases in die switch Kontrollstruktur eingefügt werden.
Woran kann es liegen?
 
Mach es lieber so:

PHP:
<?php
$array = array('a', 'b', 'c');

if(in_array($_GET['action'], $array, true))
{
  #include
}
else
{
  #default Anweisung
}
?>
 
Mag jetzt vielleicht blöd klingen aber:
1.) Wieso geht meine Variante nicht?
2.) Wie soll ich bei deiner Variante das includen anstellen?
Wie wähle ich den String der $_GET['action'] entspricht aus dem array aus und speichere ihn in beispielsweise $var ab?
 
Weil du versuchst mit PHP gültigen PHP Code zu erzeugen, das funktioniert so aber nicht.
Das liegt vorallem daran, dass der Code Teil von switch nicht ausgeführt wird.
Er wird nur geparst und wenn eine Entsprechung gefunden wird, also ein case der wahr ist, dann wird dieser ausgeführt.

Du könntest es so machen:

PHP:
<?php
$array = array('a' => 'index.php', 
  'b' => 'test.php', 
  'c' => 'foo.php');

if(in_array($_GET['action'], $array, true))
{
  include($array[$_GET['action']]);
}
else
{
  #default Anweisung
}
?>
 
Hi,

Felix' Variante ist aber übersichtlicher. Wenn neue gültige Actions dazukommen, musst Du die nur noch oben mit in das Array packen, statt den 37. case anzuhängen ;)

LG
 

Neue Beiträge

Zurück