Most PHP scripts deal with data in one form or another, usually stored in variables. PHP can work with different types of data. For example, a whole number is said to have an integer data type, while a string of text has a string data type.
In this article you explore PHP's data types; look at loose typing; learn how to discover the type of a given value; and see how to change data types.
Scalar data is data that only contains a single value. As of version 6, PHP features 6 scalar data types:
Type | Description | Example values |
---|---|---|
integer | A whole number |
7 , -23 |
float | A floating point number |
7.68 , -23.45 |
string | A sequence of characters |
"Hello" , "abc123@#$" |
unicode | A sequence of Unicode characters |
"Hello" , "abc123@#$" |
binary | A sequence of binary (non-Unicode) characters |
"Hello" , "abc123@#$" |
boolean | Either true or false |
true , false |
The unicode and binary types were added in PHP 6. Earlier PHP versions just have a string type.
Compound data can contain multiple values. PHP has 2 compound data types:
An array or object can contain multiple values, all accessed via one variable name. What's more, those values can themselves be other arrays or objects. This allows you to create quite complex collections of data.
As well as scalar and compound types, PHP has 2 special data types that don't fall into the other categories:
null
, which means "no value"Some languages, such as Java, are strongly typed: once you've created a variable, you can't change the type of data stored in it. PHP, in contrast, is loosely typed: you can change a variable's data type at any time.
In the following PHP example, $x
starts off by holding integer data (3). The next line appends the string "hello" to the data using the concatenation operator, which changes $x
's value to "3hello" (a string data type). Finally, 5.67 is assigned to $x
, changing its data type to a float:
$x = 3;
$x .= "hello";
$x = 5.67;
You can check a value's data type using one of the following PHP functions:
is_int( value )
true
if value
is an integer, false
otherwiseis_float( value )
true
if value
is a float, false
otherwiseis_string( value )
true
if value
is a string, false
otherwiseis_unicode( value )
true
if value
is a Unicode string, false
otherwiseis_binary( value )
true
if value
is a binary string, false
otherwiseis_bool( value )
true
if value
is a Boolean, false
otherwiseis_array( value )
true
if value
is an array, false
otherwiseis_object( value )
true
if value
is an object, false
otherwiseis_resource( value )
true
if value
is a resource, false
otherwiseis_null( value )
true
if value
is null
, false
otherwise
is_unicode()
and is_binary()
are only available in PHP 6 and later.
For example, the following code displays 1 (true):
$x = 3.14;
echo is_float( $x );
settype()
As you've already seen, you can change a variable's data type simply by assigning a new value of a different type to the variable. However, sometimes it's a good idea to explicitly set the type of the data held by a variable. For example, if you're handing data entered by a visitor, or passing data to another program, then it's good to ensure that the data is of the correct type.
PHP has a function called settype()
that converts a variable's value from one data type to another:
$x = 3.14;
settype( $x, "integer" );
In the above example, $x
's data type is changed from float to integer (with the result that $x
ends up containing the value 3).
Be careful when changing data types, since you may end up losing information — for example, when changing a float (3.14) to an integer (3).
If you just want to change a value's type at the time you use the value, then you can use casting. This merely changes the type of the value that is to be used; the original variable remains untouched.
To cast a value, place the data type in parentheses before the value at the time you use it:
$x = 3.14;
echo (integer) $x;
The above code displays 3 (3.14 cast to an integer). However, note that $x
still contains the value 3.14 after the cast operation.
You can, if you prefer, use (int)
instead of (integer)
, and (bool)
instead of (boolean)
.
You now know all about PHP data types. You've looked at PHP's various scalar, compound and special data types, learned about PHP's loose typing, and discovered how to read and change data types in your PHP scripts. Happy coding!
Source ; tutorialized.com