PHP does not need (or is not) to define his variable type in the reputation variable; the type of a variable is determined by the relationship in which the variable is used, that is, if you assign a value of a string to a variable Var, var becomes a string variable. If you assign an integer to Var again, he becomes an integer variable.
An example of an automatic conversion variable type of PHP is the operator ' + ' of the addition. If any operand is a double-precision number, then all operands are evaluated as a double-precision number, and the result is also a double-precision number. Otherwise, the operand will be considered an integer, and the result will be an integer. Note that this does not affect the variable type of each operand itself, and the only change is how the operand is handled in the calculation process.
$foo = "0"; $foo is a string with a value of "0" (ASCII 48)
$foo + +; $foo is a string with a value of "1" (ASCII 49)
$foo + 1; $foo is now an integer (2).
$foo = $foo + 1.3; $foo is now a double-precision number (3.3).
$foo = 5 + "Little piggies"; $foo is an integer (15)
$foo = 5 + "Small Pigs"; $foo is an integer (15)
If you think the last two expressions in the above example look a little odd, see the "Convert String" section.
If you want to force a variable to be counted as a fixed type, see the "type coercion (casting)" section. If you want to change the type of a variable, see the description of the function "Settype ()".
Determine the type of a variable
Because PHP itself determines the type of variables and generally converts them as needed, the type of a particular variable is not obvious at any time. PHP includes a number of functions to find out the type of this variable. These functions are GetType (), Is_long (), is_double (), is_string (), Is_array (), and Is_object ().
Type coercion (casting)
Type coercion in PHP is likely to be similar to the C language: the type to be required is written in the parentheses in front of the stronger variable.
$foo = 10; $foo is an integer
$bar = (double) $foo; $bar is a double precision number
The following mandatory methods are allowed:
(int), (integer) – Force integer
(real), (double), (float) – Force double
(string) – Force as String
(array) – Force a group of
(object) – Force objects
Note that tab characters (tabs) and spaces (spaces) are allowed in parentheses, so the following statements are equivalent:
$foo = (int) $bar;
$foo = (int) $bar;
String conversion
When a string is computed as a numeric value, his result and type are determined as described below.
If the string contains the character '. ', ' e ', or ' e ', it is treated as a double-precision type variable, otherwise it is treated as an integer.
The value of this string is determined by the first part of the word. If this string starts with data of any valid number, the numeric data is the value of the string participating in the operation. Otherwise, the value is 0 (zero). Valid digital data is followed by the following tags, followed by one or more digits (can contain a decimal point), followed by an optional exponent. An exponent is made up of one or more numbers following the ' e ' or ' e '.
$foo = 1 + "10.5"; $foo is a double precision number (11.5)
$foo = 1 + " -1.3e3"; $foo is a double precision number (-1299)
$foo = 1 + "bob-1.3e3"; $foo is an integer (1)
$foo = 1 + "BOB3"; $foo is an integer (1)
$foo = 1 + "Small Pigs"; $foo is an integer (11)
$foo = 1 + "Little piggies"; $foo is an integer (11);
This string includes the character ' E '
For more information, refer to the UNIX manual section on strtod (3).