数值
数值有8种类型:
- 标量类型
- 整型 int
- 浮点型 (小数) float
- 字符串 string
- 布尔型 bool
- 复合类型
- 数组 array
- 对象 object
- 特殊类型
- 资源 resource
- 空 null
整型
整型 int
- 值的写法
- 最大值
- 可通过 PHP_INT_MAX 来获取.
- 区分
- 32位: 约21亿
- 64位: 9223372036854775807
- 一旦超过 最大整型值, 则会变为 浮点值
- 判断是否为 int
is_int( 变量 )
- 进制
基数范围 前缀
二进制 0-1 0b
八进制 0-7 0
十进制 0-9 无
十六进制 0-9 a-f 0x- 任意进制 -> 十进制
公式: 基数 * 当前进制 ^ 次方
个位: 0次方
十位: 1次方
百位: 2次方
千位: 3次方
… 以此类推2048 1024 512 256
128 64 32 16
8 4 2 1
- 十进制 -> 任意进制
- 规则:十进制 除以 指定进制, 一直除到商小于指定进制,
- 结果: 倒取余数
- 任意进制 -> 十进制
<?php
$num = PHP_INT_MAX;
var_dump( $num );
echo '<br>';
$num = $num + 1;
var_dump( $num );
echo '<br>';
$num = 500;
var_dump( is_int($num) );
$num = 500.6;
var_dump( is_int($num) );
echo '<hr>';
$num = 0b1110; # 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 14
$num = 0b0101;
$num = 0b1100;
$num = 0b10101001;
$num = 0b10001000;
$num = 0b01110111; # 1少的时候用 加法
# 1多的时候用 减法
echo $num;
echo '<hr>';
$num = 012;
echo $num;
echo '<hr>';
$num = 0x2b;
echo $num;
?>
浮点型
浮点型 float
- 值的写法
- 科学计数法
xEy => x * 10的y次方 - 如何判断是否为 浮点型
is_float( 变量 )
- 有效位数
从前向后, 从非0数字开始, 保留14位 - 浮点运算
二进制对于小数的操作不稳定.
不推荐用 浮点型做比较等值运算
<?php
$num = 1.5;
$num = -1.5;
$num = 2e5;
var_dump($num);
$num = 2e5;
$num = 10;
var_dump( is_float( $num ));
$num = 0.1234567890123456789;
var_dump($num);
$num = 0.0001234567890123456789;
var_dump($num);
$num = 123.45678901234567890123;
var_dump($num);
$num1 = 0.1 + 0.2; # 0.3000000000000000000000000000000000000005
$num2 = 0.3;
echo $num1;
echo '<br>';
echo $num2;
echo '<br>';
if ($num1 == $num2) {
# num1 与 num2 相等时的区域
echo "Yes";
}else{
# num1 与 num2 不等时的区域
echo "No";
}
?>
布尔型
布尔型 bool boolean
- 值的写法
- true 对/好/是/正确/可行 …
- false 错/坏/否/错误/不可行…
- 布尔值代表的两种状态
- 作用
在比较, 判断时才会使用bool. - 等值
有以下7种值与false等价的,其余都是与true等价- false
- 0
- 0.0
- 空符串or零字符串
- 空数组
- 空null
- 未定义变量
- 如何判断是否为bool型
is_bool()
<?php
var_dump( 1>2 );
var_dump( 1>0 );
if ( false == false ) {
echo "yes <br>";
}else{
echo "no <br>";
}
if ( false == 0 ) {
echo "yes <br>";
}else{
echo "no <br>";
}
if ( false == 0.0 ) {
echo "yes <br>";
}else{
echo "no <br>";
}
// 在引号中, 只有 空引号 和 零引号是与false 等价, 其余都不等价
if ( false == "" ) {
echo "yes <br>";
}else{
echo "no <br>";
}
if ( false == "0" ) {
echo "yes <br>";
}else{
echo "no <br>";
}
if ( false == "0.0" ) {
echo "yes <br>";
}else{
echo "no <br>";
}//输出 no
if ( false == " " ) {
echo "yes <br>";
}else{
echo "no <br>";
}//输出 no
if ( false == "00" ) {
echo "yes <br>";
}else{
echo "no <br>";
}//输出 no
# [] 代表空数组
if ( false == [] ) {
echo "yes <br>";
}else{
echo "no <br>";
}
# null 代表 空类型
if ( false == null ) {
echo "yes <br>";
}else{
echo "no <br>";
}
# $xxx 是未定义变量
# @ 错误抑制符
if ( false == @$xxx ) {
echo "yes <br>";
}else{
echo "no <br>";
}
?>
字符串
字符串 string
-
值的写法
-
单引号
-
双引号
-
heredoc结构
<<<开始符
结束符;
- 开始符的后面不能有任何的字符, 包括空格
- 结束符的前后都不能有任何字符, 包括空格
- 开始符 和 结束符 必须一致
-
单双引号一般用于 单行
-
heredoc结构一般用于 多行
-
-
值的长度
最大长度: 2G -
判断类型
- 如何判断是否为 字符串
is_string()
- 检测是否为数字 或 数字字符串
is_numeric()
- 检测是否为标量类型
is_scalar()
- 如何判断是否为 字符串
<?php
$str="落霞与孤鹜齐飞,秋水共长天一色";
$str='落霞与孤鹜齐飞,秋水共长天一色';
# heredoc结构
$str = <<<tfboy
<table border="1">
<caption>tfboys团队成员</caption>
<tr>
<td>王俊凯</td>
</tr>
<tr>
<td>王源</td>
</tr>
<tr>
<td>易烊千玺</td>
</tr>
</table>
tfboy;
echo $str;
var_dump($str);
echo '<hr>';
$str = 100; # 数字
var_dump( is_numeric($str) );
$str = '100'; # 数字字符串
var_dump( is_numeric($str) );
# 具有特殊字符的 字符串
$str = '2e5';
$str = '2.5';
var_dump( is_numeric($str) );
# 具有普通的字符
$str = '100abc';
var_dump( is_numeric($str) );//输出false
echo '<hr>';
$str = 100;
$str = 100.5;
$str = true;
$str = "abc";
$str = null;
var_dump( is_scalar($str) );//输出false
?>
字符串单双引号区别
- 单:
- 不能识别变量
- 不能识别转义字符, 但能识别转义 转义字符
- 双:
- 能识别变量, 推荐在双引号用 {} 包住变量
- 能识别转义字符
- 共同点:
单双可以互插, 不能自插 - 转义字符:
- 转义符: \
- 作用:
- 能将 普通字母 具有特殊意义
- 取消 特殊意义的 字母
- 常见转义字符
n \n 换行
t \t 制表符 Tab
r \r 回车
...
- 本身自带特殊意义的字符:
' \'
" \"
$ \$
\ \\
...
<?php
$name1 = 'Bobby';
$name2 = 'Hobby';
$str = '$name1 和 $name2之间有什么区别? ';
echo $str;
// $str = "$name1 和 $name2之间有什么区别? <br>";
$str = "{$name1} 和 {$name2}之间有什么区别? <br>";
echo $str;
echo '<hr>';
$str = "\$name1 和 \$name2 之间有什么区别? <br>";
echo $str;
$str = "\$name1 和 \$name2 之间有什么\n区别? <br>";
echo $str;
echo '<hr>';
$str = 'Bobby has a Hobby. you don\'t have Hobby <br>';
echo $str;
$str = 'Bobby has a Hobby. you don"t have Hobby <br>';
echo $str;
$str = "Bobby has a Hobby. you don\"t have Hobby <br>";
echo $str;
$str = "Bobby has a Hobby. you don't have Hobby <br>";
echo $str;
?>