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 trialSascha Cajandig
4,033 PointsPHP 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.
<?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
Courses Plus Student 18,373 PointsHi 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;
}
?>
Zachary Scott
1,650 PointsThis 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;
}
?>
Jordan Jenks
9,351 Pointsgracious
Yoyo Monsell
385 Points<?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;
}
Sascha Cajandig
4,033 PointsThank you so much!! I really appreciate your explanation.
Armando Rosas
4,505 PointsThank 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.
nicolabell
18,212 PointsI had a problem with this one but it was because I had capitalised the word 'case' - d'oh!
mes ks
69 Pointsmes ks
69 Pointsi didn't get it