Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP PHP Arrays and Control Structures PHP Conditionals Switch Statements

PHP switch challenge Help Please

This is the challenge,

In the code provided, there are two if statements. The second if statement displays a message IF the user role is not equal to "admin". We want to display separate messages based on the role of the logged in user. First we're going to add a message for our admin and keep the current message as the default. Step 1: Change the second if statement to a switch statement, keeping the current message as the default. Step 2: Add a second check to the switch statement for the role of "admin" and display the following message: As an admin, you can add, edit, or delete any post.

This is my code below... I keep getting a syntax error for line 9.

switch.php
<?php
//Available roles: admin, editor, author, subscriber
if (!isset($role)) {
    $role = 'subscriber';
}

//change to switch statement
switch($role != 'admin') {
    echo "You do not have access to this page. Please contact your administrator.";
    break;
  case "admin":
    echo "As an admin, you can add, edit, or delete any post.";
      break;
}

5 Answers

Christopher Debove
PLUS
Christopher Debove
Courses Plus Student 18,373 Points

Hi there! In PHP the switch take a variable and compare it to values specified in the cases :

What the exercise tell you is to transform it in switch, therefore, the variable you want to compare is $role, so :

<?php
switch($role) {}
?>

Then you have to add a case for $role with the value "admin", and keep the condition where $role !== admin:

<?php
switch($role) {
  case "admin":
    echo "As an admin, you can add, edit, or delete any post.";
  break;
  default:
    echo "You do not have access to this page. Please contact your administrator.";
  break;
}
?>

i didn't get it

Zachary Scott
Zachary Scott
1,650 Points

This worked for me:

<?php
//Available roles: admin, editor, author, subscriber
if (!isset($role)) {
    $role = 'subscriber';
}

//change to switch statement
switch($role) {
  case "admin":
    echo "As an admin, you can add, edit, or delete any post.";
  break;
  default:
    echo "You do not have access to this page. Please contact your administrator.";
  break;
}
?>

gracious

<?php
//Available roles: admin, editor, author, subscriber
if (!isset($role)) {
    $role = 'subscriber';
}

//change to switch statement
switch($role) {
  case "admin":
    echo "As an admin, you can add, edit, or delete any post.";
  break;
  default:
    echo "You do not have access to this page. Please contact your administrator.";
  break;
}

Thank you so much!! I really appreciate your explanation.

Thank you for posting this Sascha.

I wrote "As admin, you..." instead of "As an admin, you...".

I kept changing the code and playing with alternative syntax and couldn't get it right until I saw your code and realized I simply had a misspelling error.

I had a problem with this one but it was because I had capitalised the word 'case' - d'oh!