PHP——PHP的数据类型
PHP一共支持8种原始类型:
1. 4种标量类型
- boolean(布尔型)
- integer(整型)
- float/double(浮点型)
- string(字符串型)
2. 两种复合类型
- array(数组)
- object(对象)
3. 两种特殊类型
- resource(资源)
- NULL。
【注】 PHP 中变量的类型通常不是由程序员设定的,确切的说,是 PHP 根据该变量使用的上下文在运行时决定的。
一. 标量数据类型
类型 | 说明 |
boolean(布尔型) | 只有两个值,真(true)和假(false) |
string(字符串型) | 字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合 |
integer(整型) | 整型数据类型只能包含整数。这些数据类型可以是正数或负数 |
float(浮点型) | 浮点数据类型用于存储数字,和整型不同的是它有小数位 |
1. 布尔型(boolean)
保存一个 true 值或者 false 值,其中 true 和 false 是 PHP 的内部关键字。设定一个布尔型的变量,只需将 true 或者false 赋值给变量即可。
在 PHP 中不是只有 false 值才为假的,在一些特殊情况下 boolean 值也被认为是 false 。这些特殊情况为:0、0.0、“0”、空白字符串(“”)、只声明没有赋值的数组等。
【注】美元符号 $ 是变量的标识符,所有变量都是以 $ 符开头的,无论是声明变量还是调用变量,都应使用 $ 符。
【例】
<?php$b = 0;if($b == true)echo "<font color='pink' size='+1' >变量为真</font> ";elseecho "<font color='red' > 变量为假</font>";
?>
2. 字符串型(string)
字符串是连续的字符序列,由数字、字母和符号组成。字符串中的每个字符只占用一个字节。
在 PHP 中,有3种定义字符串的方式,分别是单引号(')、双引号(")和界定符(<<<)。
单引号和双引号是经常被使用的定义方式,定义格式如下:
<?php $a =‘字符串’; ?>
或
<?php $a ="字符串"; ?>
单引号与双引号的区别:
(1)两者的不同之处在于,双引号中所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。
(2)对转义字符的使用。使用单引号时,只要对单引号 “ ' ”进行转义即可,但使用双引号(")时,还要注意“ " ” 、“$”等字符的使用。这些特殊字符都要通过转义符“\”来显示。常用的转义字符如下表所示。
\n 和 \r 在 Windows 系统中没有什么区别,都可以当作回车符。但在 Linux 系统中则是两种效果,在 Linux 中,\n 表示换到下一行,却不会回到行首;而 \r 表示光标回到行首,但仍然在本行。
注意:如果对非转义字符使用了“\”,那么在输出时,“\”也会跟着一起被输出。
【例】
<?php$b = "红尘中你的无上清凉,寂静光明默默照耀世界";echo " <h3>$b</h3>";echo '<h4>$b</h4>';?>
执行结果:
界定符(<<<)在使用时后接一个标识符,然后是字符串,最后是同样的标识符结束字符串。界定符的格式如下:
$string = <<< str
要输出的字符串
str
其中 str 为指定的标识符。
注意:结束标识符必须单独另起一行,并且不允许有空格。在标识符前后有其他符号或字符,也会发生错误。
【例】 下面使用界定符输出变量中的值,可以看到,它和双引号没什么区别,包含的变量也被替换成实际数值。
<?php$b = "红尘中你的无上清凉,寂静光明默默照耀世界;";echo $string = <<<str<h3>\$b 的内容是: $b<br> 行如风,如君一骑绝尘,空谷绝响,至今谁在倾听;</h3>
str;?>
3.整型(integer)
整型数据类型只能包含整数。在 32 位的操作系统中,有效的范围是 -2147483648~+2147483647。整型数可以用十进
制、八进制和十六进制来表示。
如果用八进制,数字前面必须加 0;如果用十六进制,则需要加 0x。
注意:如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉 。
【例3.4】 分别输出八进制、十进制和十六进制的结果。
<?php$a = 1234567890; //声明一个十进制的整数$b = 0x1234567890; //声明一个十六进制的整数$c = o1234567890; //声明一个八进制的整数$d = 01234567; //声明另一个八进制整数echo '数字1234567890不同进制的输出结果:<p>';echo '10进制的结果是:'.$a.'<br>'; //输出10进制整数echo '16进制的结果是:'.$b.'<br>'; //输出16进制整数echo '8进制的结果是:<p>';
if($c == $d){ //判断$str3 和$str4的关系echo 'c = d = '.$c; //如果相等,输出变量值}else{echo 'c != d <br>'; //如果不相等,输出“$str3 != $str4”} echo 'c 的结果是:'.$c.'<br>';echo 'd 的结果是:' .$d;
?>
执行结果:
注意:如果给定的数值超出了int型所能表示的最大范围,将会被当作float型处理,这种情况称为整数溢出。同样,如果表达式的最后运算结果超出了int型的范围,也会返回float型。
4.浮点型(float)
浮点数据类型可以用来存储整数,也可以保存小数。它提供的精度比整数大得多。在32位的操作系统中,有效的范围是1.7E-308~1.7E+308。在PHP 4.0以前的版本中,浮点型的标识为double,也叫做双精度浮点数,两者没有区别。
浮点型数据默认有两种书写格式,一种是 标准格式:
3.1415
-35.8
还有一种是 科学记数法格式:
3.58E1
849.72E-3
【例】 输出圆周率的近似值。用3种书写方法:圆周率函数、传统书写格式和科学记数法,最后显示在页面上的效果都一样。
<?php
echo '圆周率的3种书写方法:<p>';
echo '第一种:pi() = '. pi() .'<p>'; //调用pi函数输出圆周率
echo '第二种:3.14159265359 = '. 3.14159265359 .'<p>'; //传统书写格式的浮点数
echo '第三种: 314159265359E-11 = '. 314159265359E-11 .'<p>'; //科学记数法格式的浮点数?>
执行结果:
注意:浮点型的数值只是一个近似值,所以要尽量避免浮点型数值之间比较大小,因为最后的结果往往是不准确的。
二. 复合数据类型
复合数据类型包括两种,即数组和对象。
类型 | 说明 |
array(数组) | 一组类型相同的变量的集合 |
object(对象) | 对象是类的实例,使用 new 命令来创建 |
1.数组(array)
数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及 PHP 中支持的其他语法结构等。
数组中的每个数据称为一个元素,元素包括索引(键名)和值两个部分。元素的索引可以由数字或字符串组成,元素的值可以是多种数据类型。
定义数组的语法格式如下:
$array = ('value1',' value2 '……)
或
$array[key] = 'value'
或
$array = array(key1 => value1, key2 => value2……)
其中,参数 key 是数组元素的下标,value 是数组下标所对应的元素。以下几种都是正确的格式:
$arr1 = array('This','is','a','example');
$arr2 = array(0 => 'php', 1=>'is', 'the' => 'the', 'str' => 'best ');
$arr3[0] = 'tmpname';
声明数组后,数组中的元素个数还可以自由更改。只要给数组赋值,数组就会自动增加长度。
<?php$arr = array(0 => 1,1=>2, 'hi' => 'hello');$arr[2]='zth';echo $arr[0]."<br>";echo $arr['hi'].": ".$arr[2];?>
执行结果:
2.对象(object)
编程语言所应用到的方法有两种:面向过程和面向对象。在 PHP 中,用户可以自由使用这两种方法。
三. 特殊数据类型
特殊数据类型包括资源和空值两种。
类型 | 说明 |
resource(资源) | 资源是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的 |
null(空值) | 特殊的值,表示变量没有值,唯一的值就是null |
在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。因此,资源很少需要手工释放。
2.空值(null)
空值,表示没有为该变量设置任何值,另外,空值(null)不区分大小写,null 和 NULL 效果是一样的。
被赋予空值的情况有以下3种:还没有赋任何值、被赋值 null、被 unset() 函数处理过的变量。
【例】 下面来看一个具体实例。字符串 string1 被赋值为 null,string2 根本没有声明和赋值,所以也输出 null,最后的string3 虽然被赋予了初值,但被 unset() 函数处理后,也变为 null 型。unset() 函数的作用就是从内存中删除变量。
<?php
echo "变量(\$string1)直接赋值为null:";
$string1 = null; //变量$string1被赋空值
$string3 = "str"; //变量$string3被赋值str
if(!isset($string1)) //判断$string1是否被设置echo "string1 = null";
echo "<p>变量(\$string2)未被赋值:";
if(!isset($string2)) //判断$string2 是否被设置echo "string2 = null";
echo "<p>被unset()函数处理过的变量(\$string3):";
unset($string3); //释放$string3
if(!isset($string3)) //判断$string3是否被设置echo "string3 = null";?>
执行结果:
说明:is_null() 函数是判断变量是否为 null,该函数返回一个 boolean 型,如果变量为 null,则返回 true,否则返回false。unset() 函数用来销毁指定的变量。从 PHP 4 开始,unset() 函数就不再有返回值,所以不要试图获取或输出 unset()。
四. 数据类型转换
1. 自动转换
- 布尔型数据和数值型数据在进行算术运算时,TRUE 被转换为整数1,FALSE 被转换为整数 0。
- 字符串型数据和数值型数据在进行算术运算时,如果字符串以数字开头,将被转换为相应的数字;如果字符串不是以数字开头,将被转换为整数0。
- 在进行字符串连接运算时,整数、浮点数将被转换为字符串型数据,布尔值 TRUE 将被转换为字符串"1",布尔值 FALSE 和 NULL 将被转换为空字符串 ""。
- 在进行逻辑运算时,整数0、浮点数0.0、 空字符串""、字符串"0"、NULL 以及空数组将被转换为布尔值 FALSE, 其他数据将被转换为布尔值TRUE。
【例】
<?php$a = true;$b = false;$c = "100abc";$d = "abc100";$e = 100;var_dump($a + $e);echo "<br>";var_dump($b + $e);echo "<br>";var_dump($c+$e);echo "<br>";var_dump($d+$e);echo "<br>";var_dump($a.$e);echo "<br>";var_dump($b.$e);echo "<br>";var_dump($a && $e);echo "<br>";var_dump($b && $e);echo "<br>";
?>
执行结果:
E:\wamp64\www\mr\zth\test.php:27:int 101E:\wamp64\www\mr\zth\test.php:29:int 100E:\wamp64\www\mr\zth\test.php:31:int 200E:\wamp64\www\mr\zth\test.php:33:int 100E:\wamp64\www\mr\zth\test.php:35:string '1100' (length=4)E:\wamp64\www\mr\zth\test.php:37:string '100' (length=3)E:\wamp64\www\mr\zth\test.php:39:boolean trueE:\wamp64\www\mr\zth\test.php:41:boolean false
2. 强制转换
a. 用括号括起来的类型名称进行转换
转换操作符 | 转换类型 | 举例 |
(boolean) | 转换成布尔型 | (boolean)$num、(boolean)$str |
(string) | 转换成字符型 | (string)$boo、(string)$flo |
(integer) | 转换成整型 | (integer)$boo、(integer)$str |
(float) | 转换成浮点型 | (float)$str、(float)$str |
(array) | 转换成数组 | (array)$str |
(object) | 转换成对象 | (object)$str |
注意:在进行类型转换的过程中应该注意以下内容:
转换成 boolean 型时,null、0 和未赋值的变量或数组会被转换为false,其他的为真;
转换成整型时,布尔型的 false 转换为 0,true 转换为 1,浮点型的小数部分被舍去,字符型如果以数字开头就截取到非数字位,否则输出0。
【例】
<?php$str = "HELLO WORLD ";echo "原始的 string 形式:".$str;echo "<p>";echo "这是boolean形式: ".(boolean)$str;echo "<p>";echo "这是integer形式: ".(integer)$str;echo "<p>";echo "这是float形式: ".(float)$str;
?>
执行结果:
原始的 string 形式:HELLO WORLD
这是boolean形式: 1这是integer形式: 0这是float形式: 0
b. 使用以 val 结尾的函数名的函数
函数名 | 语法格式 | 返回值 |
intval | int intval( mixed var) | 返回 var 的整数值 |
float | float floatval( mixed var) | 返回 var 的浮点数值 |
strval | string strval( mixed var) | 返回 var 的字符串值 |
【例】
<?php$str = "123.456abc";var_dump(intval($str));echo "<br>";var_dump(floatval($str));echo "<br>";var_dump(strval($str));echo "<br>";
?>
执行结果:
E:\wamp64\www\mr\zth\test.php:23:int 123E:\wamp64\www\mr\zth\test.php:25:float 123.456E:\wamp64\www\mr\zth\test.php:27:string '123.456abc' (length=10)
c. 使用 settype() 函数
语法格式:
bool settype ( mixed var, string type )
参数 var 为指定的变量,参数 type 为指定的类型,参数 type 有7个可选值,即 boolean、float、integer、array、null、object 和 string 。如果转换成功则返回 true,否则返回 false。
当字符串转换为整型或浮点型时,如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串;如果
数字中含有小数点,则会取到小数点前一位
【例】
<?php$str = "123.456abc";$int = 100;$boo = true;settype($str,"integer");var_dump($str);echo "<br>";settype($int,"boolean");var_dump($int);echo "<br>";settype($boo,"string");var_dump($boo);?>
执行结果:
E:\wamp64\www\mr\zth\test.php:26:int 123E:\wamp64\www\mr\zth\test.php:29:boolean trueE:\wamp64\www\mr\zth\test.php:32:string '1' (length=1)
五. 检测数据类型
PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于
某个类型,如果符合则返回true,否则返回false。
函数 | 检测类型 | 举例 |
is_bool | 检查变量是否是布尔类型 | is_bool(true)、is_book(false) |
is_string | 检查变量是否是字符串类型 | is_string('string')、is_string(1234) |
is_float/is_double | 检查变量是否为浮点类型 | is_float(3.1415)、is_float('3.1415)) |
is_integer/is_int | 检查变量是否为整数 | is_integer(34)、is_integer('34') |
is_null | 检查变量是否为null | is_null(null) |
is_array | 检查变量是否为数组类型 | is_array($arr) |
is_object | 检查变量是否是一个对象类型 | is_object($obj) |
is_numeric | 检查变量是否为数字或由数字组成的字符串 | is_numeric('5')、is_numeric('bccd110') |
【例】
<?php$a = true;$b = "Hello World ";$c = 123456;echo "变量 a 是否为布尔型: ".is_bool($a)."<br>";echo "变量 b 是否为字符串型: ".is_string($b)."<br>";echo "变量 c 是否为整型: ".is_int($c)."<br>";echo "变量 c 是否为f浮点型: ".is_float($c)."<br>";
?>
执行结果:
变量 a 是否为布尔型: 1
变量 b 是否为字符串型: 1
变量 c 是否为整型: 1
变量 c 是否为f浮点型:
【注】结果为 true 时,页面返回 1。结果为 false 时,页面无返回。
PHP——PHP的数据类型相关推荐
- Postman使用Date数据类型,Postman发送Date类型数据,Postman模拟前端调用
Postman使用Date数据类型: 在form-data数据类型下,使用 2021/7/7 11:11:00 (yyyy/MM/dd HH:mm:ss) 的数据格式即可 如下: 在json数据格式中 ...
- 大数据中用到的新的数据类型bigint、decimal、smallint、tinyint
在对比oracle数据库和大数据库的时候,发现了几个用以存放数字的新的类型bigint.decimal.smallint.tinyint,为了对比之间的不同,我进行了统计 bigint 可以精确的表示 ...
- NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存
NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...
- 【JavaScript总结】JavaScript语法基础:数据类型
------>数据类型有哪些? ->基本类型:数字类型,布尔类型,字符串类型 ->引用类型:对象类型,函数类型 ->空类型:null 和 undefined ->运算符: ...
- 数据类型对应的字节数
20210622 https://www.icode9.com/content-4-421680.html 32位和64位常用数据结构所占字节数 20210126 1 2 4 8 1248 刚好都是2 ...
- tensorflow2.0 基础一 常用数据类型及转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_43619065/arti ...
- 深入浅出Redis五种基本数据类型
文章目录 1.String SDS(Simple Dynamic String) 2.RedisDB设计 3.List 4.Hash 5.Set intset 6.ZSet skiplist 1.St ...
- TVM自定义数据类型
TVM自定义数据类型 本文将介绍"自定义数据类型"框架,该框架可在TVM中使用自定义数据类型. 介绍 在设计加速器时,关键是如何近似地表示硬件中的实数.这个问题具有长期的行业标准解 ...
- 自主数据类型:在TVM中启用自定义数据类型探索
自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...
- 基本数据类型转换规则
基本数据类型转换规则 前言 一. byte.short.char运算的规则 二. 多种数据类型混合运算规则 三.总结 前言 在这篇文章中,我对Java的基本类型数据类型的混合运算做了一些总结,希望可以 ...
最新文章
- arial unicode ms字体_5个检测商用字体和免费字体合集的网站
- 清除距今天7天的日志
- 深入探究递归神经网络:大牛级的训练和优化如何修成?
- 手机自动化测试:appium源码分析之bootstrap八
- springboot 异步mysql_spring boot 使用@Async实现异步调用方法
- MyBatis运行原理(一)SqlSessionFactory对象创建过程分析
- javascript代码解释执行过程
- Liferay Portal使用MySQL数据库配置
- SPFA差分约束(bzoj 2330: [SCOI2011]糖果)
- 机械自动化与计算机专业,大学机械与自动化专业主要学什么
- 高频量化交之李庆:在华尔街狼共舞的岁
- 作为iOS开发者,你不可错过的资源
- UE 简单存档读档功能
- 数据结构c语言课程设计报告,(数据结构c语言课程设计报告.doc
- ubuntu eclipse java_ubuntu 下安装eclipse amp;java环境配置
- python中execute函数_python中的函数是如何使用的?
- java手机游戏星际争霸_java Swing实现的星际争霸游戏源码
- 王者荣耀背景html,王者荣耀镜背景故事是什么?王者荣耀镜背景故事分享
- 网课脚本教程 【基础】(3) 使用 jq 制作简单脚本
- 前端毕业设计 天气预报