Start learning with our library of video tutorials taught by experts. Get started
Viewers: in countries Watching now:
PHP is a popular, reliable programming language at the foundation of many smart, data-driven websites. This comprehensive course from Kevin Skoglund helps developers learn the basics of PHP (including variables, logical expressions, loops, and functions), understand how to connect PHP to a MySQL database, and gain experience developing a complete web application with site navigation, form validation, and a password-protected admin area. Kevin also covers the basic CRUD routines for updating a database, debugging techniques, and usable user interfaces. Along the way, he provides practical advice, offers examples of best practices, and demonstrates refactoring techniques to improve existing code.
In this movie, we're going to be looking at a different kind of logical expression called Switch Statements. Switch statements are similar to if statements. In that they control the flow through our application. But they're going to have a different syntax, some different rules to follow. And a couple of special gotchas that we want to make sure that we watch out for. First, let's look at the basic syntax. We're going to use the function name, switch, followed by an argument. And that argument's going to be a value. This is the value that we're going to be testing through each of a series of test cases. So then in our curly braces we're going to list off those test cases.
And each one is going to start with case, and then a test value to that we're going to test against value to see if their equal. And then a colon, and then a statement or series of statements that we want to execute. Then following that will be the next case that we want to test. So we'll test whether the values equal to test value two and if it is then we'll execute those statements. And then finally we have the option to provide a default case. If it doesn't match any of the above cases we're going to execute the statements that are defined by default. So, notice that we're dropping down each one of those cases, doing a test on each line.
It's very similar if we've written if, else if, and else. The big difference here is that we're testing equality. We're testing to see, is the value equal to test value 1, no? Okay, move down to the next one. Is value equal to test value 2? That's a very simple comparison of equality. There's no greater than or less than or anything like that. And usually, we're not working with Booleans. Because a bullion is either true or false, so there's really not a lot of test cases. Where you would see it more is it you had something like a string that could be many different things.
For example let's say that our customers had told us that the way that they wanted to be contacted. And they might have said that they wanted to be contacted by email or by phone or by some other message. Text message, Skype, something else, so we could have a switch statement that then executed a set of statements. Based on the way that they told us they wanted us to contact them. Now I only provided two case statements here and a default, but you can have as many cases as you need. You could just keep adding different cases each time. Now most times you're probably going to want if else statements.
You are going to use those way more often than switch statements. The switch statements are going to be very useful when you do have this kind of compact logic. Where you really are just saying, all right I want to test a value and that value can be ten different things. So I'm going to list off the ten different things that could happen if that value is each of those ten cases. And I'm going to provide code for those. The parallel structure can be a little bit easier to read, and to work with. Okay, now that we know the syntax and the basic idea, let's try some out. I'm going to create a new page where we can work these, I'm going to open up basic.html and I'll do Save As. And I'm going to call this switch.php.
Change the title will also be switch, and let's give ourselves a php area. Alright, so to start with, let's just give ourselves a variable. We'll call it a, and we're going to make a equal to 3. And then, let's do a switch statement. Switch and then send the variable n as the argument to switch. So we're going to be testing variable a. And in the case where it is 0, then we're going to echo a equals 0, will be our tag at the end, and semicolon after that. Okay, now let's take that same thing, and I'm going to Paste it here. And let's make our next case, that it's one, alright? See what we're doing here, see the parallel structure? I'm actually going to Copy both of those now.
Save myself some typing, and we're going to make this one 2, and this one 3. I'll change it both here and in the text, so there we go. Now we have our cases. Now remember I could also have a default case, for now I'm not going to do the default case. Let's just do the simple one. We're going to test whether it's 0, 1, 2, or 3. If it's not that, if it's 4, 5 or 6, well, then none of these will execute. And we'll just move on right past this whole statement. So let's Save it and let's try it out. Let's go back to Firefox, and instead of logical, we're going to look for switched.php.
A equals 3, perfect. See how that worked? It skipped right past these cases, it tested them. Said nope, nope, nope, yes, this one matches. So then it executed the statement. All right let's just try moving a and making a equal to 0. Let's see what happens here, Save it. Let's go back to Firefox and let's reload the page. Whoa, wait a minute, a equals 0. Well that's correct. It did match that case. But look what happened after that. It also came back and told us that it was equal to 1, 2, and 3. Which it's obviously not. And if we put another value in here, like 2.
Go back and reload the page. You'll see that it comes back and it executes the first one and every case that comes after it. It's an important point about the way that switch statements work. They do the statement that matches. And then they continue to match every one that comes below it. Well that's probably not what we wanted. So if you don't want that behavior, then you've got to provide a break statement. So break, break and break, after each one. Now when we go back, let's make it equal to 0 again, Save it, go back to Firefox and there it is, a equals 0. That's the behavior that we would expect.
Because we told it, okay, you've done your statement now break out of the switch statement. And that will then drop down here to the curly brace and keep going from there. So this break is super, super important when you're working with switch statements. Drill it into your head and you'll save yourselves a lot of debugging time. Now as I said, we can have a default case here as well. Default and then echo and then a is not 0, 1, 2 or 3. And we don't have to have a break here, because it's the last one.
But I'm going to go ahead just to keep the parallel structure, and also to keep reminding myself that, that break is very important to have. So I'll put it in there, now lets just try a is equal to 9. Go back to Firefox, and there it is. It's not equal to zero, one, two, or three. So you can see how that works, right? Now I'm going to set that back to 2, and let's just drop down here. And I want to show you another example. This example is going to output the Chinese zodiac, the year that it is in the Chinese zodiac. So to do that, we're going to do a little bit of a calculation. We're going to take the year, we're going to use 2013, and I'm going to subtract four from it, and do the modulo of that, using 12. That means that I'm finding the remainder once we divide it by 12. So after we divide it by 12 evenly, how many are left over? So that end result is going to be a single value. So even though I've got a calculation in here, it's a single value that comes through in the end, and that's what I'm testing.
So whatever that value is, whatever that remainder is it will check. If it's 0, then we are in the first year of the 12 year cycle, so it is the Year of the Rat. If it's a one, well then we know we're in the next year and the year is the Ox and so on. What I want to show you here, though, is that white space doesn't matter. Do you see the difference here? Up here, we had each one of these on a seperate line. Case 1 echo break, case 2 and so on. Here I've got them all one after another, very compact, very easy to read.
I've even added in some extra spaces here in front of the numbers to keep it all lined up nice, tight, easy to read. I've still got my colon. I've still got my semicolons to separate the commands and I've still got break, but the white space doesn't matter. Alright just so we can see that let's go ahead and bring that up in a browser. I'll put a br tag here at the end. It pops up and it says 2013 is the year of the snake. Now there's one last example that I want to show you, I'm going to Paste in another example here. Imagine that we have a user type. Let's go ahead and set a user type so we don't get an error. User type, and the user type is going to be equal to customer.
Right it could be customer it could be student. It could be press it could be something else. Well if that user type is student then we're going to echo back welcome. If its press then we're going to say greetings and if its customer then we're going to say hello to them. What I want to show you is what if you had multiple cases that you wanted to match on something. What if you wanted to have press and customer respond to the same set of statements. I mean we could say Hello and just do it there but this is a simple example imagine if this was in fact twenty lines of code, right? So, there's twenty lines of code, am I going to really repeat that twenty lines of code again? No, I don't really want to do that.
Now, this is the thing I want to caution you about. You may be tempted to do something like this, and to say case press customer, with commas between them. That's how you do it in some other languages. It's not how you do it in PHP, though. In PHP, if you want them to have the same one, well, guess what. You just put them one after another. Because what happens when press matches. It executes the statements that are here and then all the statements that are below it until it gets to a break. So press customer is going to do the same set of statements because of the way the switch works. You can see now why the switch statement behaves the way it does and why it needs you to put in that break some of the times.
Because there are cases when you're not going to use the break when you have multiple values like this. So we could have press, we could have customer, we could have case, when it's admin, right? We can just add more cases. And each one of those is going to do this block that's below it. So, let's save it and let's just try it. Let's go down here, we reload the page and there it is. Hello is what we get back as the result. That is the statement that goes with the case for customer. So, as I said, you're going to use if statements a lot more than your going to use switch statements.
But if you look up here it's something like this, where you have the Chinese zodiac. This is the classic case where you're going to want to use a switch statement. Writing if else statements for all of this just doesn't give you the same legibility and ease of maintaining the code as a switch statement does.
Find answers to the most frequently asked questions about PHP with MySQL Essential Training.
Here are the FAQs that matched your search "":
Sorry, there are no matches for your search ""—to search again, type in another word or phrase and click search.
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.