四种标量类型:1、整型 2、浮点型(小数) 3、字符串 4、布尔型
两种复合类型:1、数组 2、对象
两种特殊类型:1、null 2、资源
一、字符串 string
1.1、单引号
通常执行速度也是最快的,因为PHP不会解析这种字符串(不解析其中是否存在变量) 只能转义单引号和转义字符本身;
echo 'phptherightway is ' . $adjective . '.' // 一个单引号的使用示例,
. "\n" // 为变量和转义字符串使用了多行拼接
. 'I love learning ' . $code . '!';
1.2、双引号
最适用于:
- 转义字符串
- 内含多个变量和纯文本的字符串
- 压缩多行拼接,提高可读性
echo "phptherightway is $adjective.\n I love learning $code!";
// 没有使用多行拼接,
1.3、花括号
$var = 'jack';
$str = "不要把后面的杰克和肉丝分开-----{$var}Rose";
1.4、转义字符
进行转义字符前放置反斜杠;当在双引号内使用这些字符时,它们具有特殊的含义
转义字符的代码 | 转义字符的含义 |
---|---|
\" |
双引号 |
\' |
单引号 |
\\ |
反斜杠 |
\n |
换行符 |
\r |
回车符 |
\t |
制表符 |
\$ |
美元符 |
1.5、字符串连接符点(.)
- 如果代码行超过了推荐的行长度(120个字符),那么应该考虑拼接代码行
- 为了便于阅读,最好使用拼接操作符而不是拼接赋值操作符
- 在变量原本的命名空间内,当拼接使用了新行,则应该缩进
$str = '聂哥帅不帅'
. "\n"
. '帅';
echo $str;
1.6、heredoc 语法结构
标识符的命名:只能包含字母、数字和下划线,并且不能用数字和下划线作为开头;结束定界符必须独立一行存在。前后不能有其他字符(包括空白符)
$str = <<<EOD
定义字符串的方法是用heredoc句法结构
EOD;
echo $str;
/*
$变量名 = <<<定界符号
结束定界符;
*/
1.7、NowDoc 语法结构(php5.3+)
名称加单引号。相当于定界符中的单引号。不会解析变量。
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
二、数字类型
1. 整型(intrger)
就是不包括小数点的数,PHP支持以十进制数、八进制数、16进制数表示的整数值 PHP在大多数平台上支持的最大整数是20亿左右【-2147483648,2147483647】,如果超出integer范围,会被解释float类型。
$a = 1234 ; // 十进制数
$a = -123 ; // 负数
$a = 0123 ; // 八进制数 (等于十进制 83)
$a = 0x1A ; // 十六进制数 (等于十进制 26)
八进制数由前导0和一个0~7的数字序列组成 0755 =》十进制493 +010 =》十进制 8
十六进制值以
0x
开头,接着是数字(0~9)或字母(A~F)的序列,一般大写 0xFF //十进制 255 0x10 // 十进制 16 -0xDAD1 //十进制 -56017
三. 浮点型(float)
- 最大支持【1.7E-38,1.7E+38】,精确到小数点后15位。
- 浮点数只是近似值,浮点数表示8,其实结果7.999999...,所以不要比较两个浮点数的值是否相等
$a = 1.234;
$b = 1.2e3; //1.2乘以10的3次方
$c = 7E-10; //7乘以10的-10次方
# 客官留步
$a = (0.1+0.7)*10;
$a = (int)$a;
var_dump($a);
四、布尔型 boolean
布尔值表示某事是真或假,PHP定义了一些值为true,另外一些为false,True或false决定了条件代码的结果。
下面的值都是false,其他所有值都认为true。
-
整数0 (-1和其他非零值都是true)
-
浮点型0.0
-
字符串
'0'
,"0"
、空白字符串(中间无空格) -
布尔值false
-
没有成员的数组
- null
五、数组
六、对象
七、NULL
下列情况之一被认为是null
-
赋值null
-
声明的变量尚未被赋值
- 被
unset()
函数销毁的变量
八、资源类型
保存外部资源的一个引用.比如一个数据库资源
九、相关函数
1、var_dump()
打印变量的相关信息 $var = 'string'; var_dump($var);
$var = ['a','b','c']; var_dump($var);
对比
print_r
2、empty 检查一个变量是否为空
-
若变量不存在则返回 TRUE
- 若变量存在且其值为
""
、0
、"0"
、NULL
、FALSE
、array()
、声明未赋值的变量; 以及没有任何属性的对象,则返回TURE
$var = 0;
// 结果为 true,因为 $var 为空
if (empty($var)) {
echo '$var is either 0 or not set at all';
}
// 结果为 false,因为 $var 已设置
if (!isset($var)) {
echo '$var is not set at all';
}
3、is_null
判断变量是否为NULL.只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE
数据类型之间相互转换
1、类型自动转换
- 布尔型 true =》 1;false=》0
- null转整型0
- 字符串转数字
"123abc" -> 123 "1.23abc" -> 1.23
2、强制类型转换
2.1、在要转换的变量之前加上用括号括起来的目标类型
- (int), (integer) - 转换为 整型(integer)
- (bool), (boolean) - 转换为 布尔型(boolean)
- (float), (double), (real) - 转换为 浮点型(float)
- (string) - 转换为 字符串(string)
- (binary) - 转换为二进制 字符串(string) (PHP 6)
- (array) - 转换为 数组(array)
- (object) - 转换为 对象(object)
- (unset) - 转换为 NULL (PHP 5)
2.2、使用3个具体类型的转换函数
- intval(变量,进制)
int intval ( mixed $var [, int $base = 10 ] )
- floatval(变量)
float floatval ( mixed $var )
- strval()
string strval ( mixed $var )
$a1 = 10.4;
$a2 = -12.5;
$a3 = 44.1238503;
print intval($a1); // returns 10
print intval($a2); // returns -12
print intval($a3); // returns 44
2.3、使用通用类型转换函数settype
bool settype(mixed var,string type) //设置变量的类型
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo 现在是 5 (integer)
settype($bar, "string"); // $bar 现在是 "1" (string)
3、检测变量类型函数
- is_int():检查变量是否是整数
- is_float():检查变量是否是浮点
- is_string():检查变量是否是字符串
- is_bool():检查变量是否是布尔
- is_array():检查变量是否是数组
- is_object():检查变量是否是一个对象
- is_resource():检查变量是否是一个资源
- is_null():检查变量是否为Null
- is_scalar():判该变量是否是标量
- is_numeric():判断是否是数字或数字字符串
- is_callback()判断是否是有效的函数名
var_dump(is_int(23)); //bool(true)
var_dump(is_int("23")); //bool(false)
var_dump(is_int(23.5)); //bool(false)
var_dump(is_int(NULL)); //bool(false)
var_dump(is_int("")); //bool(false)
伪类型
- mixed:混合类型,可接受多种不同的类型
- number:参数可以是int或float
- callback:函数