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 trialCindi Harris
3,702 PointsCould i please get an explanation of this problem?
I have went over this multiple times. I seem to understand it as if there is a username present and if that username is NOT equal to Treehouse, which in this case it is so i would think that it would not echo Hello $username or Hello Treehouse. I would think it would return You must be logged in. I know there is something i am missing in this case. Can you help me identify what error i'm making?
1 Answer
andren
28,558 PointsThe thing you are missing is that the else clause that echos "You must be logged in" is attached to the first if statement, it will only execute if the first if statement is false. The second if statement nested within the first if statement is a completely independent statement that is not in any way affected by the if/else statements that exist above it.
It is simply an if statement that checks if the username is not equal to Treehouse
. It has no else statement attached to it so when it ends up being false it simply does nothing. And since the if statement it is nested under actually did run the else statement will not run.
Maybe it gets clearer if I actually modify the example a bit to illustrate how independent these statemented are:
<?php
$username = "Treehouse";
if ($username) { // No nesting
if ($username != "Treehouse") { // One level of nesting
echo "Hello $username";
} else { // One level of nesting
if($username == "Treehouse") { // Two levels of nesting
echo "Hello World";
}
}
} else { // No nesting
echo "You must be logged in";
}
?>
This is an example with even more nesting in it that the one in the quiz. But based on the explanation I gave above what do you think the program above will output?
The answer is Hello World
.
username
contains a string so the first if statement runs, username
does contain Treehouse
so the nested if statement does not run. This causes the else statement attached to the nested if statement to run and within there is another if statement that checks if username
equals Treehouse
. Since that is true it echoes out "Hello World" and then it is done executing.
I'm not sure if that example made things clearer or more confusing, but the point I'm trying to illustrate is that the if statements are independent of one another. The else statements only care about whether the if statement they are attached to ran or not. They are not aware of and do not care about the result of any other if statement nested or otherwise.