Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
During the previous movie we've been looking at different types in PHPs. So strings integers floats those are called types. And we've seen a few times when PHP converted a value from one type to another type for us. For example we were able to add a string to an integer and we saw that PHP converted a Boolean true to be the string one when it was output to our webpage. This process is referred to as Type Juggling. When PHP does it on the fly for us. We can also explicitly set a type ourselves. For example, converting a string one into the integer one.
And when we do it, it's called Type Casting. And we can do type casting in two ways. We can do it using a function, we have the settype function for that purpose. And it's just settype and then in parentheses, two arguments. The item that's being cast into another type, comma, and the second argument is the type that we want to set it to. So in this case, it's going to either convert var to be an integer or make sure that it already is an integer. Notice the integer is in quotes, it's a string we're passing in. The other way that we can set type is by simply writing the name of the desired type in parentheses before the item being cast.
So for example, parentheses, integer, closed parentheses, space, and then the item that we want to cast. Notice that there's not quotes around integer in this case. We're just putting integer right there between the parentheses. It's not a string, it is just an instruction to PHP. And this is the syntax of how it's done in the C programming language, that's where this comes from. The types that we can use, the values that we can provide for typecasting, are the different types that we've seen so far. You've got string, integer, or int for short, float, array, boolean, or bool, for short. Now, for some of these, it's going to be kind of obvious if we're converting an integer to a float or an integer to a string.
It's pretty obvious the kind of conversion that it's going to make. But it's probably less obvious to you if you're going to convert the number 42 into a boolean or convert an array to a string. What that kind of result is going to give you. You can try them in an experiment to see, so you can get a feel for what they do. Or the php.net website actually has a list of the rules that explains how it converts from 1 type to the other. So you can look those up. Let's create a page where we can do some experiements and play with both type juggling and type casting. So let's start by opening up basic.html, and we'll do Save As. I'm going to call this page type_casting.php, even though it's technically going to be for both type juggling and type casting. Type casting is probably the more common term that people use to refer to it, mostly because that's the thing that we have control over. So let's start out by just putting type Juggling in the html here. And then, lets put a bit of php in, we'll define, count is going to be equal to a string that is 2.
Okay, so, it's equal to a string and we can find out what type it is. We can certainly use is string is int, those kinds of queries that we learned when we were learning those types. An even better way to do it is to put echo gettype. So we're going to just ask it to get back the type of count for us. I'll put a br tag at then end. So that's going to report back. Now, we know what the type of that is, its pretty obvious. The, the type is a string. Even though it's a number, it's going to be a string. So now, let's do a little bit of PHP. And let's add count plus equals 3.
We saw this before when we were looking at integers. So let's do a gettype again. And then, let's just bring up that page, so we can have a look. Here we are instead of null, I need type_casting.php. So Type Juggling starts out being a string. And then it converts it to an integer. So count, got converted when we added plus 3 to it, right? The type was converted. It knew, even though you started with a string, i if I'm going to add these two things together, I'm going to need to have integers. And so it does the conversion for you. That's type juggling, PHP tries to make it work out for you. And we saw that if we had 2 cats for example, did the same thing. Reload the page, it still works just fine.
It still goes ahead and adds them together. We can output the count and you would see that it was equal to 5. And I can also see type juggling going back the other way. Let's convert our integer back to a string by concatenating it with two other strings. Here I have cats equal to a string, followed by what is now an integer. Remember, we ended up with an integer here, and then another string. And when we get gettype on that, we'll see what that returns to us. Lets bring this up, reload the page, and it's back to being a string again. And that's because it said hey, I'm going to concatenate as string, an integer, and a string. Well, if I'm doing concatenation, I need to turn those all into a string. And so it juggles back.
To a string for us. Now I think that this second one, using an integer to a string is not such a bad thing to do. And I think you'll see that happen a lot in people's PHP code. Because the conversion from an integer to a string is super simple, right? And it's something that we're probably going to be doing a lot. However, I think in other cases, like here, when we're converting a string into an integer, or, especially if we are doing more complex conversions. Maybe you're trying to convert an array into an integer, right, that seems like a much more extreme example. It's sloppy programming to to rely on php to do the switching for you. It's much better for you to make the change yourself. So, I wouldn't say that you can never do type juggling. Because I think you'll find me doing this kind of thing in my code all the time. But you won't find me doing this kind of thing in my code. I think that's the kind of thing, in my mind, that would be considered sloppy programming.
So, how do we make the change ourselves? Let's give ourselves the br tag here and then, let's do type casting br. So we talked about the two ways that we can do type casting. One is to use a function so we have the set type function. We are going to go ahead and use that same variable count but this time it ended up a string here. Now we are going to change it back into an integer. So we can do gettype on that and see what that is. So let's just bring that up and try it real quick. There you go, cast it back to an integer. It was a string, here we changed it back to an integer, the other way that we can do it is by using that declaration in front of it, right, string in parentheses.
This is not a string itself, it's just the word string inside parentheses, right before count, and I'm setting count2 equal to that value. And then we can compare. We can see what count equals, and what count2 equals. So let's bring this up and let's try it. There we go, now notice count one is still an integer. Count 2 is a string. And this is an important point about the difference between doing it these two different ways. Settype changes it in place. It actually just effects the variable right where it is, and changes its type. It recasts it in place.
This one does not do that and we can if we take this away, you would see the difference and you would see it doesn't recast it. Let's make that point a little more explicit. Let's just make a br tag here and I'll do php, dollar sign test1 is equal to the number 3. And then we'll do that same thing, but we'll make test2, so that we'll have two of them that are absolutely identical. And then, let's set the type both ways. So let's try the first one, we're going to use settype and we'll do it to test1.
And its type is going to be string, going to explicitly convert it. Then in the next one, let's just do it by putting string and then test2, kay? See what I'm doing? I'm setting the type both ways here. Now let's test the type for both of them. I'll just grab one of these lines up here, use that as a starting point. But we're going to call it test1, and test1 will echo back that value, and then do the same thing for test2.
Okay, so let's bring that up and let's take a look. Reload the page, and you see the first one was changed to a string. The second one was not changed. It's still is an integer. This change did not last. It only takes place as it's being used, in this case up here, as it's being assigned. The conversion is happening during assignment, it's not making a permanent change to the item itself. So, so it's important for us, while we're programming to be aware of what type something has, is it an integer, or is it a string? And then, to use type casting when we need to convert it to something else.
Get unlimited access to all courses for just $25/month.Become a member
61 Video lessons · 100268 Viewers
56 Video lessons · 113238 Viewers
71 Video lessons · 82120 Viewers
131 Video lessons · 39410 Viewers
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.