PHP数据类型
在本教程中,我们将学习PHP数据类型。
数据类型
PHP支持8种数据类型。
变量的数据类型告诉我们可以对数据执行的操作类型以及该数据类型的值将占用的内存空间。
下面是4个简单数据类型的列表。
它们一次只能保存一个值。
数据类型 | 描述 | 示例 |
---|---|---|
Boolean | 只能有“true”或者“false”两个值的数据类型。 | $is_game_over=真 |
整数 | 表示一组正数和负数的整数。 | $count=10 |
浮点数 | 这表示一组数字,包括正数和负数以及小数部分。 | $g=9.8 |
String | 这表示用双引号括起来的一系列字符。也可以使用单引号。 | $name=“”; $country_name='San Francisco' |
下面是2个复合数据类型的列表。
这些是可以保存多个值的数据类型。
数据类型 | 描述 |
---|---|
数组 | 数组变量基本上是一个有序映射。 |
对象 | 它是由属性和方法组成的数据类型。 |
我们将在各自的教程中详细讨论数组和对象。
以下是两种特殊数据类型的列表。
数据类型 | 描述 |
---|---|
Null | 只能取一个值“Null”,如果变量设置为Null,则表示该变量显式不包含任何值。 |
资源 | 它包含对外部资源(如文件或者数据库连接)的引用。 |
PHP是松散类型的
这是非常重要的一点。
PHP是松散类型的,这意味着PHP不关心存储在变量中的值,因为数据类型是根据使用变量的上下文自动确定的。
例如 true
在上面的一行中,我们创建了一个变量$x,并为它分配了一个整数值10.
所以,变量$x的数据类型是Integer。
现在我们要做一件非常有趣的事情。 false
我们现在已经将一个字符串值设置为同一个变量$x。
这次,变量$x的数据类型是string。
有趣的是,我们可以将任何类型的值赋给一个变量,而该变量的数据类型将根据它所持有的当前值来确定。
这与java和C++等强类型语言完全不同,因为它们是不同的数据类型,所以不能将字符串值赋给整型变量。
注意!PHP松散类型的特性很容易导致错误。
所以,在给变量赋值时要格外小心。
确定变量的数据类型
我们可以使用这个函数 null
确定变量的数据类型。
让我们检查几个例子。
$name = ""; echo gettype($name);
这将打印"string",因为$name包含字符串数据。
$age; echo gettype($age);
这将打印"null",因为我们已经创建了一个变量$age,但是它没有用任何值初始化,所以它包含null。
我们还可以使用以下函数来确定变量的数据类型。
函数 | 结果 |
---|---|
is_bool($var) | 如果$var是Boolean类型,则返回true,否则返回false |
is_int($var) | 如果$var是Integer类型,则返回true,否则返回false |
is_float($var) | 如果$var是float类型,则返回true,否则返回false |
is_string($var) | 如果$var是string类型,则返回true,否则返回false |
is_array($var) | 如果$var是数组类型,则返回true,否则返回false |
is_object($var) | 如果$var是对象类型,则返回true,否则返回false |
is_resource($var) | 如果$var是资源类型,则返回true,否则返回false |
is_null($var) | 如果$var的类型为null,则返回true,否则返回false |
使用settype()更改变量的数据类型
我们可以使用 $x = 10;
函数。
此函数接受两个参数。
第一个是变量,第二个是类型。
在下面的示例中,我们将整型变量$x的数据类型更改为string。
$x = 10; //this is an integer variable settype( $x, "string" ); //setting type of $x to string echo gettype($x); //this will print "string"
使用类型转换更改变量值的数据类型
我们可以使用类型转换将变量的值更改为特定类型。
在这种方法中,我们只针对变量的值,因此变量的数据类型将保持不变。
$weight = 100.20; //data type float (double) echo gettype($weight); //double //now we will type cast the value of $weight to integer echo (int) $weight; //100 double value is changed to integer so fractional part is truncated. echo gettype( (int) $weight ); //integer this is the type of the value echo gettype($weight); //double