ys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
定义数组语法:
//方式一:
array(key => value, key2 => value2, ...);
//方式二:短数组定义语法
[key => value, key2=>value2, ...]
说明:
//键(key)可以是一个整数integer或字符串string
//值(value)可以是任意类型的值
示例:
//方式一
$arr = array('name' => 'itbsl', 'age' => 18);
//方式二
$arr = ['name' => 'itbsl', 'age' => 18];
最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。
注意:
(1)“+”:两个数组相加,如果两个数组有相同的键,则后面相同的键不会被加进去
(2)“==”:可以判断两个数组是否含有相同的键值对
(3)“===”:可以判断,两个数组是否含有相同的键值对,而且顺序一样,而且数据类型也要一样。
资源类型
资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
NULL
特殊的 NULL 值表示一个变量没有值。NULL类型唯一可能的值就是 NULL,不区分大小写。
下列情况的变量值被认为是NULL:
对象
其广义指的是在内存上一段有意义的区域,称作为一个对象。
callable
自 PHP 5.4 起可用 callable类型指定回调类型 callback。
一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。
基本数据类型的转换
自动转换
自动转换是由低到高的,boolean -> int -> float
注意:当一个整型或者浮点型数据与字符串型数据进行运算时会比较特别,举例如下
定义三个变量,分别为整型、浮点型、字符串型:$a = 4; $b = 4.5; $c = '12fff';
当计算$d = $a + $c;时,输出$d的结果为16,输出数据类型为整型,如果将$c的值改为'eee123fff',那么输出$d的结果为4,这里可以说明,如果一个字符串和一个整型或浮点型数据进行运算,那么如果这个字符串的开头是数值型字符串,那么PHP解析器会把开头部分的数值截取出来(如果$c='12.5fff',那么会截取出12.5而不是12)和整型或者浮点型数据进行运算,结果为浮点型那么$d的类型就是浮点型,如果结果为整型那么$d的数据类型就是整形。如果这个字符串的开头不是数值型字符而是类似于eee123abc这样的字符串,虽然其中包含了数值型的字符,他也仍然是无法直接参与计算的,这种字符串会被转换成0。那么此时的$d = $a + $c,就相当于$d = $a + 0;
总结:
如果是字符串和数字进行基本运算,那么会先把字符串转换成数字,如果无法转换成数字,那么就把字符串当做0
如果是字符串和字符串进行基本运算,那么会尝试把两个字符串都转换成数字,如果有一个能转换成数字,那么结果就是这个数字,如果两个都不能转成数字,那么两个当做0,因此结果也就为0了。
强制转换
强制转换的方法有三种
setType(变量名,'类型')
类型可以是int
integer
float
bool
boolean
string
array
object
,类型需要用单引号引起来,这一种是直接对变量本身修改
(类型)变量
类型可以是int
integer
float
bool
boolean
string
array
object
,不对变量本身修改,而是返回新的值
intval(变量) floatval(变量) strval(变量) boolval(变量), 不对变量本身或者值修改,而是返回新的值
如何知道一个变量是什么数据类型?
答: 用函数gettype(变量名)即可获取该变量的类型。