PHP数据类型
什么是数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)resource(资源)这都是PHP的数据类型。
上面几种数据细分为标量类型、复合类型、还有特殊类型。
标量类型
1、字符串 (string)
字符串有三种定义方式:单引号,双引号,定界符(heredoc);
单引号字符串中出现的变量不会被变量的值替代;
双引号字符串中最重要的一点是其中的变量会被变量值替代;
如果遇到美元符号($)解析器会尽可能多地取得后面的字符以组成一个合法的变量名.
如果想明确的指定名字的结束,用花括号把变量名括起来。
例:
$beer = "Heineken";
echo "He drank some {$beer}s";
字符串定界的方法使用定界符语法 "<<<"
例:
$str = <<<EOD
This is test.
Hello word.
EOD;
echo $str;
转义字符
\n 换行
\r 回车 ( WINDOW \r\n ) (linux \n) (Mac OS \r)
\t 水平制表符 (按键盘 tab 产生的效果)
\\ 反斜线
\$ 美元符(表示变量的开始)
\" 双引号
2、整型(integer)
整数是一个没有小数的数字。
整数规则:
整数必须至少有一个数字 (0-9)
整数不能包含逗号或空格
整数是没有小数点的
整数可以是正数或负数
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
例:
$a = 1234;
var_dump($a);
3、浮点型(float, double)
浮点数是带小数部分的数字,或是指数形式。
例:
$a = 1.234;
var_dump($a); //float(1.234)
4、布尔型(bool)
布尔型可以是 TRUE 或 FALSE,布尔型通常用于条件判断。
以下值被认为是FALSE:
布尔值 FALSE
整型值 0
浮点型值 0.0
空白字符串和字符串 “0”
没有成员变量的数组
没有单元的对象(php4适用)
特殊类型的NULL
例:
$fo1 = false;
var_dump($fo1);
复合数据类型
1、数组 (array)
数组可以在一个变量中存储多个值。
例:
$data = ['一','二','三'];
$data1 = array('a' => '周一','b' => '周二','c' => '周三')
var_dump($data);
var_dump($data1);
2、对象 (Object)
对象是存储数据和有关如何处理数据的信息的数据类型
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
特殊类型
1、资源 (resource)
存放资源数据( PHP外部数据, 如数据库, 文件 )
例:
$fh = fopen("test.txt", "rw");
var_dump($fh);
2、空值 (null)
null 无,表示没有值,null不表示空格,也不表示0;
以下情况,则认为是null:
没有设置为任何预定义的变量;
明确的赋值为null;
使用函数unset()清除;
例:
$x = "Hello world!";
$x = null;
var_dump($x);
类型自动转换
因为php对于类型定义非常的松散,所以有时会根据引用变量的环境,将变量自动转换为最适合的类型;
例:
$num = 5;
$str = "15";
echo $num + $str;
$str = "100 hello";
$num = 200;
echo $num + $str;
$str = '1.2';
if($str){ //if 判断为 true
echo 'hello world';
}
类型转换
第一种转换方式: (int) (bool) (float) (string) (array) (object)
例:
$num = 3.14;
$res = (int)$num;
$res = (float)$num;
$res = (string)$num;
$res = (bool)$num;
$res = (array)$num;
$res = (object)$num;
var_dump($res);
第二种转换方式: intval() floatval() strval()
例:
$str="123.9abc";
$int=intval($str); //转换后数值:123
$float=floatval($str); //转换后数值:123.9
$str=strval($float); //转换后字符串:"123.9"
var_dump($int);
var_dump($float);
var_dump($str);