Raptus
Raptus

Reputation: 495

PHP - Using a for loop instead of a switch statement

Overflow community first post ever!

Currently i'm working on a project and have started to use PHP to dynamic insert pages.

At this point in time I have...

switch ($route) {
  case 'step1':
        include('./views/enrolment/mainstream/_step1.php');
        include('./views/partials/_footer.php') ;
        break;
    case 'step2':
        include('./views/enrolment/mainstream/_step2.php');
        include('./views/partials/_footer.php') ;
        break;
    case 'step3':
        include('./views/enrolment/mainstream/_step3.php');
        include('./views/partials/_footer.php');
        break;
    case 'step4':
        include('./views/enrolment/mainstream/_step4.php');
        include('./views/partials/_footer.php');
        break;
    case 'step5':
        include('./views/enrolment/mainstream/_step5.php');
        include('./views/partials/_footer.php');
        break;
    case 'step6':
        include('./views/enrolment/mainstream/_step6.php');
        include('./views/partials/_footer.php');
        break;
    case 'step7':
        include('./views/enrolment/mainstream/_step7.php');
        include('./views/partials/_footer.php');
        break;


This to means seems horrifically long and is better achieved through a for loop, however i'm a newbie to PHP and am entirely unsure of how I would go about implementing this idea.

Any other sugguestions without a the use of a for loop is also welcome!

Thanks guys!

Upvotes: 2

Views: 163

Answers (8)

Praveen
Praveen

Reputation: 2419

You can check if that file exists using php's file_exists() fn

if(file_exists('./views/enrolment/mainstream/_'.$routes.'.php')) {
    include('./views/enrolment/mainstream/_'.$routes.'.php');
    include('./views/partials/_footer.php') ;
}

Handle the else part to suit your need.

Upvotes: 6

Levin
Levin

Reputation: 194

it is better to check the $route value

if (in_array($route, range(1, 7))){
    include('./views/enrolment/mainstream/_'.$route.'.php');
    include('./views/partials/_footer.php') ;
} else {
    //...error code
}

Upvotes: 0

Jan Heinrich Reimer
Jan Heinrich Reimer

Reputation: 781

for($i = 0; $i < 7; $i++){
    if($route == "step" . $i){
        include('./views/enrolment/mainstream/_step' .$i . '.php');
        include('./views/partials/_footer.php');
        break;
    }
}

Upvotes: -1

MarkP
MarkP

Reputation: 2566

Just like @praveen said use:

include('./views/enrolment/mainstream/_'.$routes.'.php');

However you are duplicating:

include('./views/partials/_footer.php');

for each query, why not just have that in the page as static?

Upvotes: 0

Sal00m
Sal00m

Reputation: 2916

Why dont use $route as variable to load file?

include("./views/enrolment/mainstream/_{$route}.php");
include('./views/partials/_footer.php') ;

Upvotes: 0

marekful
marekful

Reputation: 15351

How about

$i = 1;
$steps = 7;

for($i = 1; $i <= $steps; $i++) {
  if($route === 'step' . $i) {
     include('./views/enrolment/mainstream/_step' . $i . '.php');
     include('./views/partials/_footer.php');
     break;
  }
}

Upvotes: -1

To reduce your code considerably:

include('./views/enrolment/mainstream/_step' . $route . '.php');
include('./views/partials/_footer.php');

Upvotes: 0

Benny
Benny

Reputation: 1465

Maybe this easy solution is good for you:

include('./views/enrolment/mainstream/_'.$route.'.php');
include('./views/partials/_footer.php');

Upvotes: 0

Related Questions