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.
Now we 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.

PHP’s scalar 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 (32 bit)7-23
float A floating point number (32 bits with fraction)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 falsetruefalse
The Unicode and binary types were added in PHP 6. Earlier PHP versions just have a string type.

PHP’s compound data types

Compound data can contain multiple values. PHP has 2 compound data types:
Array              Can hold multiple values indexed by numbers or strings
Object             Can hold multiple values (properties), and can also contain methods (functions) for working on properties
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.

Loose typing in PHP

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:
<?php

$x = 3;
$x .= "hello";
$x = 5.67;

?>

Finding out the data type of a value

You can check a value’s data type using one of the following PHP functions:
is_int( value )      Returns true if value is an integer, false otherwise
is_float( value )    Returns true if value is a float, false otherwise
is_string( value )   Returns true if value is a string, false otherwise
is_unicode( value )  Returns true if value is a Unicode string, false otherwise
is_binary( value )   Returns true if value is a binary string, false otherwise
is_bool( value )     Returns true if value is a Boolean, false otherwise
is_array( value )    Returns true if value is an array, false otherwise
is_object( value )   Returns true if value is an object, false otherwise
is_null( value )     Returns true if value is nullfalse otherwise

Note: is_unicode() and is_binary() are only available in PHP 6 and later.
For example, the following code displays 1 (true):
<?php
$x = 3.14;
echo is_float( $x );
?>

Changing data types with 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:
<?php

$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).

Changing data types with casting

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.
Note: You can, if you prefer, use (int) instead of (integer), and (bool) instead of (boolean).

Strings

SYNTAX

A string literal can be specified in four different ways:
  • Single quoted
  • Double quoted
  • Heredoc syntax
  • Nowdoc syntax (since PHP 5.3.0)

Single quoted

The simplest way to specify a string is to enclose it in single quotes (the character ).
To specify a literal single quote, escape it with a backslash (\). To specify a literal backslash, double it (\\).
<?php
echo 'this is a simple string<br>';
// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"<br>';
// Outputs: You deleted C:\*.*?
echo 'You deleted C:\\*.*?<br>';
// Outputs: You deleted C:\*.*?
echo 'You deleted C:\*.*?<br>';
// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline<br>';
// Outputs: Variables do not $expand $either
$expand="Expanded";
$either="Not Expanded";
echo 'Variables do not $expand $either';
?>

Double quoted

If the string is enclosed in double-quotes (“), PHP will interpret more escape sequences for special characters:
<?php
echo "this is a simple string<br>";
// Outputs: Arnold once said: "I'll be back"
echo "Arnold once said: I\'ll be back<br>";
// Outputs: You deleted C:\*.*?
echo "You deleted C:\\*.*?<br>";
// Outputs: You deleted C:\*.*?
echo "You deleted C:\*.*?<br>";
// Outputs: This will not expand: \n a newline
echo "This will not expand: \n a newline<br>";
// Outputs: Variables do not $expand $either
$expand="Expanded";
$either="Not either";
echo "Variables do not $expand $either";
?>

]

Heredoc

A third way to delimit strings is the heredoc syntax: <<<. After this operator, an identifier is provided, then a newline. The string itself follows, and then the same identifier again to close the quotation.
The closing identifier must begin in the first column of the line. Also, the identifier must follow the same naming rules as any other label in PHP: it must contain only alphanumeric characters and underscores, and must start with a non-digit character or underscore.

1 comments:

  1. Good basics if someone wants to learn the PHP programming language. As I will not learn it anymore, it is enough for me to use ready-made solutions operating in the cloud. I use Grape Up - Cloudboostr on a daily basis and I must admit that I like this approach to the application.

    ReplyDelete

 
Top
Blogger Template