PHP 零基础入门笔记(4):PHP数据类型
【摘要】
PHP 数据类型
数据类型 data type
在 PHP 中指的是存储的数据本身的类型,而不是变量的类型PHP 是一种弱类型语言,变量本身没有数据类型
3 大类 8 小类数据类型
简单(基本)数...
PHP 数据类型
数据类型 data type
- 在 PHP 中指的是存储的数据本身的类型,而不是变量的类型
- PHP 是一种弱类型语言,变量本身没有数据类型
3 大类 8 小类数据类型
- 简单(基本)数据类型:4 个小类
- 整型 int/integer
- 浮点型 float/double
- 字符串型 string
- 布尔类型 bool/boolean 只有两个值 true/false
- 复合数据类型:2 个小类
- 对象类型 object
- 数组类型 array
- 特殊数据类型:2 个小类
- 资源类型 resource
- 空类型 null
类型转换
- 自动转换:系统根据需求自己判断
- 强制转换:人为根据需要手动转换
<?php
$a = 1; $b = '2';
// 自动转换
echo $a + $b;
// 3
// 强制转换
echo $a + (int)$b;
// 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
类型判断
// 返回变量所保存数据的类型
bool is_xxx(变量名);
- 1
- 2
<?php
$a = 1;
var_dump(is_int($a));
// bool(true)
var_dump(is_string($a));
// bool(false)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
获取/设置数据类型
// 获取数据类型
string gettype(变量名)
// 设置数据类型
bool settype(变量名, 类型)
- 1
- 2
- 3
- 4
- 5
<?php
$a = 1;
echo gettype($a);
// integer
// 设置数据类型
settype($a, 'string');
echo gettype($a);
// string
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
区别强制转换
- 强制转换:返回新值
- settype:改变数据本身
整数类型
1、定义整数类型的方式
<?php
// 十进制 120 = 1 x 100 + 2 x 10 + 0 x 1
$a = 120;
echo $a . PHP_EOL;
// 二进制 6 = 1 x 4 + 1 x 2 + 0 x 1
$b = 0b110;
echo $b . PHP_EOL;
// 八进制 80 = 1 x 64 + 2 x 8 + 0 x 1
$c = 0120;
echo $c . PHP_EOL;
// 十六进制 288 = 1 x 16 x 16 + 2 x 16 + 0 x 1
$d = 0x120;
echo $d . PHP_EOL;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
PHP 输出默认都是十进制
2、进制
- 十进制:逢 10 进 1,[0-9]
- 二进制:逢 2 进 1,[0-1]
- 八进制:逢 8 进 1,[0-7]
- 十六进制:逢 16 进 1,[0-9, A-F]
3、进制转换
十进制 转 二进制
方式一:除 2 取余
10 -> 1010
10 / 2 = 5 ... 0
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0...1
- 1
- 2
- 3
- 4
- 5
- 6
方式二:取出最大的 2 的 N 次方,直到结果为 0
10
= 8 + 2
= 2^3 + 2^1
= 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 0 x 2^0
=> 1010
- 1
- 2
- 3
- 4
- 5
二进制转十进制
方式:右侧开始,对应位数乘以 2 的 N 次幂,相加求和
110
=> 1 x 2^2 + 1 x 2^1 + 0 x 2^0
= 4 + 2 + 0
= 6
- 1
- 2
- 3
- 4
4、PHP 提供的进制转换方法
// 十进制 转 二进制
echo decbin(12); // 1100
// 十进制 转 八进制
echo decoct(12); // 14
// 十进制 转 十六进制
echo dechex(12); // c
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
浮点类型
浮点类型的定义方式
<?php
$f1 = 1.23;
var_dump($f1);
// float(1.23)
// 科学计数法 e表示10为底
$f2 = 1.23e10;
var_dump($f2);
// float(12300000000)
// 整型超过自身存储的大小后会用浮点型存储
$f3 = PHP_INT_MAX + 1;
var_dump($f3);
// float(9.2233720368548E+18)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
计算机中浮点数都不准确
var_dump(2.1 / 3);
// float(0.7)
var_dump(2.1 / 3 == 0.7);
// bool(false)
- 1
- 2
- 3
- 4
- 5
布尔类型
只有两个值:true/false
通常用于判断比较
var_dump(true);
// bool(true)
var_dump(FALSE);
// bool(false)
- 1
- 2
- 3
- 4
- 5
类型比较需要注意:
- empty() 判断数据的值是否为空,不是 null, 如果为空返回 true,不为空返回 false
- isset() 判断数据存储的变量本身是否存在,存在返回 true,不存在返回 false
PHP 类型比较表:
https://www.php.net/manual/zh/types.comparisons.php
使用 PHP 函数对变量 $x 进行比较
表达式 | gettype() | empty() | is_null() | isset() | boolean : if($x) |
---|---|---|---|---|---|
$x = “”; | string | true |
false | true |
false |
$x = null; | NULL | true |
true |
false | false |
var $x; | NULL | true |
true |
false | false |
$x is undefined | NULL | true |
true |
false | false |
$x = []; | array | true |
false | true |
false |
$x = [‘a’, ‘b’]; | array | false | false | true |
true |
$x = false; | boolean | true |
false | true |
false |
$x = true; | boolean | false | false | true |
true |
$x = 1; | integer | false | false | true |
true |
$x = 42; | integer | false | false | true |
true |
$x = 0; | integer | true |
false | true |
false |
$x = -1; | integer | false | false | true |
true |
$x = “1”; | string | false | false | true |
true |
$x = “0”; | string | true |
false | true |
false |
$x = “-1”; | string | false | false | true |
true |
$x = “php”; | string | false | false | true |
true |
$x = “true”; | string | false | false | true |
true |
$x = “false”; | string | false | false | true |
true |
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/124164856
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)