php 怎么接受流数据类型_PHP数据类型

2023-11-07

PHP 支持 9 种原始数据类型。

四种标量类型:

boolean (布尔型)

integer (整型)

float (浮点型,也称作double)

string (字符串)

三种复合类型:

array (数组)

object (对象)

callable (可调用)

两种特殊类型:

resource (资源)

NULL (无类型)

整型

整数是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的某个数。整数不包括小数、分数。

(1) PHP不支持无符号整型(unsigned),即PHP中的整数都是有符号的。

(2) 整型数据所占的字节数和平台有关,通常是8个字节,可以通过输出PHP_INT_SIZE来检查int型数据所占字节数

(3) 整型所能表示的最大数(64位系统,8字节)为9223372036854775807,可以通过输出预定义常量PHP_INT_MAX来检测整型所能表示的最大数,如果超出这个范围,那么这个数据就会被解释为float型,如果超出float型则这个数据就会被解释为无穷大(INF)

(4) 整型可以用三种格式来指定:十进制、十六进制(以0x为前缀)、八进制(以0为前缀)。

浮点型

浮点数是带小数部分的数字,或是指数形式。

(1) 浮点数的字节长度和平台相关,通常最大值是1.8e308,并且具有14位十进制数字的精度,小数的精度从数字的左边第一个不为0的数开始算起。

(2) 由于浮点数有精度损失,所以当我们对浮点数进行比较的时候(指含有运算的)最好不要在if条件语句中判断一个结果为浮点数的变量是否和另一个浮点数相等,比如下面的表达式

$a = 0.1; $b = 0.2; $c = 0.3; ======> ($a + $b - $c) != 0;

如果实在需要比较,那么我们可以设置一个极小值,然后判断两个浮点数的差的绝对值(求浮点数的绝对值用abs()函数)是否小于我们设置的这个极小值,如果小于这个极小值我们基本可以认为他们是相等的。

这些精度损失一般发生在运算的过程中,如果我们直接比较两个不含运算的浮点数,则不会出现上述问题。例如

$a = 0.1; $b = 0.1; =====> 则$a和$b是相等的

字符串

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。

注意:string最大可以达到2GB。

(1) 在PHP中,既支持用单引号包围字符串也支持双引号包围字符串。但是单引号和双引号是有区别的,说明如下:

单引号:单引号不会解析$,但是执行效率高,速度快。因此建议能用单引号的地方尽量用单引号。单引号会原样输出单引号内的内容,无论有没有变量。

双引号:双引号会解析$,但执行效率比单引号要稍微低一些。如果一个字符串中有PHP变量需要解析,则应当使用双引号。

(2) 如果双引号中有比较复杂的变量,则要求使用{}括起来,否则无法解析。

$tag = "你好!";

$arr = [‘name‘ => ‘itbsl‘, ‘age‘ => 18];

//PHP能解析$tag变量,但是却无法直接解析$arr[‘name‘]和$arr[‘age‘],在运行时会报错。

$str = "$tag, $arr[‘name‘]的年龄是$arr[‘age‘]"; //错误用法

//对于复杂变量,比如数组,加上大括号告诉PHP,括起来的要当成变量处理。

$str = "$tag, {$arr[‘name‘]}的年龄是{$arr[‘age‘]}"; //正确用法

echo $str;

(3) heredoc使用

示例:

$arr = [‘name‘ => ‘itbsl‘, ‘age‘ => 18];

$str = <<

hello,world

hello,world

hello,world

{$arr[‘name‘]}

HTMLSTR;

1. 相当于双引号,也被称为双引号标识符,标识符中的$会被解析,特别适合大量的html代码

2. `<<

3. HTMLSTR指标识符,一般是大写,不过标识符名字可以自己随意指定。

4. 上面的标识符后面一定不要有任何的字符,包括空格

5. 下面的标识符要与上面的标识符名字保持一致,必须的

6. 下面的标识符前面不要有任何字符包括空格,要顶格写

7. 标识符中间的代码可以随机写,没有上面那些严格的限制

8. 以上只对PHP7.2以前有效(PHP<=7.2),PHP7.3对heredoc和nowdoc进行了改进,在使用上更加方便了,没有那么多的限制,想了解详情可以到PHP官网查看

(4) nowdoc使用

nowdoc与heredoc的用法基本一致,只有两点不一样,一个是nowdoc的上面的标签需要单引号引起来,而heredoc不需要。第二点区别是nowdoc不会解析标识符内的$,也就是说不会解析标识符内的内容,即使里面有变量也不会解析,类似于单引号的用法,所以nowdoc也称作单引号标识符

(5) 在字符串中调用函数

如果在双引号包裹的字符串中有{$变量名()}的形式,PHP引擎就会查找有没有和这个变量的值同名的函数,如果有的话就会调用和这个变量的值同名的函数。

示例:

function test() {

return ‘itbsl‘;

}

$name = ‘test‘;

echo "Hello, {$name()}";

运行代码,会输出Hello, itbsl

(6) 计算字符串的长度的函数是strlen()不能用count(),count()函数是用来计算数组的长度的,如果我们用count()计算一个字符串的长度,无论这个字符串多长,用count统计的结果都将是1.即使是一个空字符串用count()函数统计的结果都是1.

其它类型数据也可以使用字符串处理函数,不过是先将其它类型自动转换为字符串再处理。比如用strlen(10000),函数会先将10000转换为字符串“10000”,然后在处理,所以它的长度是5.

(7) 字符串可以像数组一样,通过下标来访问每个字符。但是字符串不是数组,例如一个字符串$str =

‘hello‘;如果我们想输出字符串的前两个值,我们可以echo $str[0].$str[1];或者echo

$str{0}.$str{1};(建议字符串用大括号访问,这样可以和数组区分。)

布尔型

布尔型可以是 TRUE 或 FALSE。

要指定一个布尔值,使用常量 TRUE 或 FALSE。两个都不区分大小写。

布尔型通常用于条件判断。

以下值在PHP中都会被当做false对待:

布尔值false自身

整型值 0

浮点型值 0.0

空字符串,以及字符串“0”(需要注意字符串值为“0”的情况)

不包含任何元素的数组

特殊类型null(包括尚未赋值的变量)

从空标记生成的SimpleXML对象

数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

定义数组语法:

//方式一:

array(key => value, key2 => value2, ...);

//方式二:短数组定义语法

[key => value, key2=>value2, ...]

说明:

//键(key)可以是一个整数integer或字符串string

//值(value)可以是任意类型的值

示例:

//方式一

$arr = array(‘name‘ => ‘itbsl‘, ‘age‘ => 18);

//方式二

$arr = [‘name‘ => ‘itbsl‘, ‘age‘ => 18];

最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。

注意:

(1)“+”:两个数组相加,如果两个数组有相同的键,则后面相同的键不会被加进去

(2)“==”:可以判断两个数组是否含有相同的键值对

(3)“===”:可以判断,两个数组是否含有相同的键值对,而且顺序一样,而且数据类型也要一样。

资源类型

资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

NULL

特殊的 NULL 值表示一个变量没有值。NULL类型唯一可能的值就是 NULL,不区分大小写。

下列情况的变量值被认为是NULL:

被赋值为NULL

尚未被赋值

被unset()

对象

其广义指的是在内存上一段有意义的区域,称作为一个对象。

callable

自 PHP 5.4 起可用 callable类型指定回调类型 callback。

一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。

基本数据类型的转换

自动转换

自动转换是由低到高的,boolean -> int -> float

注意:当一个整型或者浮点型数据与字符串型数据进行运算时会比较特别,举例如下

定义三个变量,分别为整型、浮点型、字符串型:$a = 4; $b = 4.5; $c = ‘12fff‘;

当计算$d = $a + $c;时,输出$d的结果为16,输出数据类型为整型,如果将$c的值改为‘eee123fff‘,那么输出$d的结果为4,这里可以说明,如果一个字符串和一个整型或浮点型数据进行运算,那么如果这个字符串的开头是数值型字符串,那么PHP解析器会把开头部分的数值截取出来(如果$c=‘12.5fff‘,那么会截取出12.5而不是12)和整型或者浮点型数据进行运算,结果为浮点型那么$d的类型就是浮点型,如果结果为整型那么$d的数据类型就是整形。如果这个字符串的开头不是数值型字符而是类似于eee123abc这样的字符串,虽然其中包含了数值型的字符,他也仍然是无法直接参与计算的,这种字符串会被转换成0。那么此时的$d = $a + $c,就相当于$d = $a + 0;

总结:

如果是字符串和数字进行基本运算,那么会先把字符串转换成数字,如果无法转换成数字,那么就把字符串当做0

如果是字符串和字符串进行基本运算,那么会尝试把两个字符串都转换成数字,如果有一个能转换成数字,那么结果就是这个数字,如果两个都不能转成数字,那么两个当做0,因此结果也就为0了。

强制转换

强制转换的方法有三种

setType(变量名,‘类型‘)

类型可以是int integer float bool boolean string array object,类型需要用单引号引起来,这一种是直接对变量本身修改

(类型)变量

类型可以是int integer float bool boolean string array object,不对变量本身修改,而是返回新的值

intval(变量) floatval(变量) strval(变量) boolval(变量), 不对变量本身或者值修改,而是返回新的值

如何知道一个变量是什么数据类型?

答: 用函数gettype(变量名)即可获取该变量的类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 怎么接受流数据类型_PHP数据类型 的相关文章

  • 【满分】【华为OD机试真题2023 JS】学校的位置

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 学校的位置 知识点数组贪心排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为了解决新学期学生暴涨的问题 小乐村要建所新学校 考虑到学生上学安全问题 需要所有
  • [前端css-2] 实现圆闪烁效果

    前端css 2 实现圆闪烁效果 1 效果展示 效果预览 2 知识点 1 position 相对定位 绝对定位 2 伪类 after before 3 animation 动画 3 源代码
  • 我的世界1.12 Java崩溃,救救孩子!1.12.2游戏崩溃

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Minecraft Crash Report WARNING coremods are present Contact their authors BEFORE contacting forge
  • C语言经典100例题(26)--利用递归方法求5!(通俗易懂)

    目录 题目 问题分析 代码 运行结果 题目 利用递归方法求5 问题分析 函数的递归调用最基本的思想就是 大事化小 5 5 4 5 5 4 3 5 5 4 3 2 5 5 4 3 2 1 每层分离出来最大的那个数 定义一个求阶乘的函数 fac
  • 2023前端面试题及答案整理(浏览器)

    浏览器 cookie 与 本地存储 相关 cookie session localStorage 分别是什么 cookie 是存储在浏览器上的一小段数据 用来记录某些当页面关闭或者刷新后仍然需要记录的信息 用户在输入用户名密码提交给服务端
  • 企业微信网页应用开发 - 消息/事件回调接口

    问题描述 在事件格式 企业微信API中 有这么一句描述 当用户在客户端或管理端进行某种操作后 会回调相应的事件给开发者 通过API进行的操作不会产生回调 高亮那句是我想要的效果 只有用户在微信原生页面上的变更操作才需要及时通知 自己应用上
  • 决策树、随机森林结果可视化

    决策树 随机森林结果可视化 决策树随机森林结果可视化 一 决策树可视化环境搭建 二 决策树可视化的三种方法 第一种 第二种 第三种 三 决策树可视化实例 四 随机森林可视化实例 五 决策树各特征权重可视化 本文测试环境为 python3 一
  • css button阴影效果,css怎么给button设置阴影

    css给button设置阴影的方法 首先创建一个HTML示例文件 然后设置一个button按钮 最后通过给button添加 box shadow 等属性来实现阴影效果即可 本文操作环境 Windows7系统 HTML5 CSS3版 DELL
  • Scene窗口—视图控制栏

    Scene 视图控制栏 在 Scene 视图控制栏中可以选择用于查看场景的各种选项 还可以控制是否启用光照和音频 这些控件仅在开发期间影响 Scene 视图 对构建的游戏没有影响 绘制模式 Draw mode 菜单 绘制模式是 选择描绘场景
  • js弹框带传值父窗口给子框_layui 父页面获取弹窗传递的值 和 父页面传值给子弹窗的方法...

    1 父页面获取子页面 弹窗 的值 现在父页面页面加载方法中定义方法 专门用来获取从子页面的值 document ready function 拿到子窗口中传回的数据 function getChildrenData data console
  • 有奖调研

    桔妹导读 参与滴滴开源问卷调研 前100名有效填写问卷的用户可获得10元滴滴快车出行卡 第99位有效参与问卷的用户可额外获得100元滴滴快车出行卡一张 滴滴开源诚挚邀请您扫码参与开源问卷调研 给我们提出宝贵建议 长按二维码识别 填写问卷 关
  • DOS命令之copy:复制

    DOS 命令 copy 用于将一个文件从一个位置复制到另一个位置 以下是五个示例 说明了如何使用 copy 命令 1 复制文件到另一个目录假设我们有一个名为 test txt 的文件 它位于 C Users username Documen
  • 安全线程的集合

    1 CopyOnWriteArrayList package com kuang unsafe import java util import java util concurrent CopyOnWriteArrayList java u
  • Windows11安装kohya_ss详细步骤(报错、踩坑)

    文章目录 笔者环境 所需环境 安装kohya ss 方式一 带有GUI的kohya ss仓库 方式二 kohya ss核心仓库 题外话 笔者环境 OS windows11 Python 3 10 6 CUDA11 6 所需环境 Python
  • JavaEE初阶(5)多线程案例(定时器、标准库中的定时器、实现定时器、线程池、标准库中的线程池、实现线程池)

    接上次博客 JavaEE初阶 4 线程的状态 线程安全 synchronized volatile wait 和 notify 多线程的代码案例 单例模式 饿汉懒汉 阻塞队列 di Dora的博客 CSDN博客 目录 多线程案例 定时器 标
  • 云计算复习资料

    文章目录 第一章 云计算 一 云计算的概念与特征 1 云计算的概念 2 云计算的特征 3 云计算发展历程 二 云计算的服务类型 1 laaS 1 IaaS的核心技术 2 IaaS的服务优势 2 PaaS 1 PaaS的核心技术 2 PasS
  • SMOTE过采样技术原理与实现

    1 这种操作的原理是什么 目的是什么 目的是合成分类问题中的少数类样本 使数据达到平衡 其中 样本数量过少的类别称为 少数类 原理和思想 合成的策略是对每个少数类样本a 从它的最近邻中随机选一个样本b 然后在a b之间的连线上随机选一点作为
  • 正交矩阵的保范性:正交变换不改变向量的长度(范数)

    在推导使用SVD分解解方程时 用到了正交矩阵的保范性这一性质 1 正交矩阵定义 A mathbf A intercal A A A A
  • QT编程----事件(一)

    review ui 生成 h cpp文件 uic form1 ui o form1 h uic form1 ui i form1 h o form1 cpp C 三个特点 继承 重载 封装 QT程序设计进阶 事件 Qt事件 Qt程序是事件驱

随机推荐

  • JavaScript 根据指定年月获取该月的第一天和最后一天、获取上个月的年月、上个月月底日期

    文章目录 根据指定年月获取该月的第一天和最后一天 获取上个月的年月 上个月月底日期 根据指定年月获取该月的第一天和最后一天 let date new Date let new year date getFullYear 取当前的年份 let
  • Spring内置定时器的使用

    1 Spring内置定时器的使用 在configuration配置类中 引入 EnableSchedule 开启定时器 编写定时器类 在定时方法中添加 Schedule注解 并且使用fixedDelay fixedRate cron表达式用
  • 关于Unsupported major.minor version 52.0报错问题解决方案

    目录 1 问题描述 2 问题分析 3 解决方案 步骤一 删除JDK1 7版本 步骤二 导入JDK1 8版本 步骤三 将新的JDK1 8引入到工程中 4 总结 1 问题描述 在启动项目工程中 当编译class文件的时候会报错一个 java l
  • QClub大连站2013年第一期总结

    今天下午 QClub大连站2013年第一期如期举行 报名差不多50人 到场也有30多人 地点还在老地方 万恒商务大厦 我自己今天的状态不太好 女儿最近感冒 我也跟着有些上火 嗓子疼了三天了 今天开始有点儿咳嗽 还好不是特别严重 开场比较简单
  • python中系统找不到指定文件怎么办_PyCharm-错误-找不到指定文件python.exe的解决方法...

    1 现象 系统提示找不到指定的文件 Error running hello Cannot run program B pystudy venv Scripts python exe in directory python study Cre
  • 微前端解决方案

    目录 微前端解决方案 微前端的整体架构 微前端部署平台 微前端解决方案 在理想的情况下 期望能达到 将一个复杂的单体应用以功能或业务需求垂直的切分成更小的子系统 并且能够达到以下能力 子系统间的开发 发布从空间上完成隔离 子系统可以使用不同
  • debug跳出循环_Java基础-第04章:循环结构「云图智联」

    免费学习视频欢迎关注云图智联 https e yuntuzhilian com 1 什么是循环结构 1 1 为什么要学习循环结构 生活中 有很多 重复的去作某件事 的例子 旋转的钟表指针 滚动的车轮 日复一日的上课等等 同理 在程序中也有很
  • Python实现经纬度空间点DBSCAN聚类

    写在前面 博主前期科研工作中 涉及到要对某个地区的一些空间点进行聚类分析 想到读研期间 曾经用DBSCAN聚类算法实现了四线激光雷达扫描的三维点云数据聚类 论文题目 基于改进DBSCAN算法的激光雷达目标物检测方法 当初用matlab实现的
  • Spark SQL参数调优指南

    目录 1 运行行为 1 1 动态生成分区 1 2 broadcast join 使用hint强制做broadcastjoin 1 3 动态资源分配 1 4 Shuflle相关 1 5 读ORC表优化 2 executor能力 2 1内存 2
  • 独孤九剑第五式-朴素贝叶斯模型

    文章适合于所有的相关人士进行学习 各位看官看完了之后不要立刻转身呀 期待三连关注小小博主加收藏 小小博主回关快 会给你意想不到的惊喜呀 各位老板动动小手给小弟点赞收藏一下 多多支持是我更新得动力 文章目录 前言 朴素贝叶斯模型理论讲解 模型
  • 网络爬虫 - 6 JsonPath的使用方法与爬取案例

    1 json数据解析 1 json概念 JSON 是存储和交换文本信息的语法 类似 XML JSON 比 XML 更小 更快 更易解析 JSON 是纯文本 JSON 具有 自我描述性 人类可读 JSON 具有层级结构 值中存在值 JSON
  • Pytorch 学习(五):Pytorch 实现多层感知机(MLP)

    Pytorch 实现多层感知机 MLP 本方法总结自 动手学深度学习 Pytorch版 github项目 部分内容延续 Pytorch 学习 四 Pytorch 实现 Softmax 回归 实现方法 实现多层感知器 Multlayer Pe
  • Unity enabled & Single(关闭组件和单例)

    1 先获取需要关闭的组件 2 在代码中用获取组件的变量点出enabled 单例 单例类 内存中只能有一个 实例化的时候一定要new calss Single 单例 private static Single instance 私人化构造函数
  • 贪心的问题合集(Leetcode题解-Python语言)

    贪心算法 Greedy Algorithm 是一种在每次决策时采用当前状态下最优或最好的策略 从而希望导致结果是最好或最优的算法 455 分发饼干 class Solution def findContentChildren self g
  • 关于虚拟机时不时繁忙、黑屏的解决方法(适用于VM12版本)

    关于虚拟机时不时黑屏 繁忙 关不了机的解决方法 针对于出现启动集群多个节点时 某一节点黑屏的情况 或者是单单要启动一台虚拟机时黑屏的情况 我个人用的是vm12版本 该方法可能不适用于VM15 我也没有试验过 不知道是否管用 特别是在启动集群
  • idea快捷键--编码

    1 创建main方法 psvm 输入public static void main的首字母 psvm 然后按tab或者enter 就会写好main方法 2 输出语句 System out print 键入 sout 3 for循环 输入 f
  • GitLab 与 Gerrit

    origin http blog csdn net feng8888bbb article details 70170638 相信大家看到这里 会发现gitlab比gerrit多了许多功能 比如说Issues Wiki等 我们从几个方面对比
  • string类常用函数

    1 substr函数 字符串截取函数 用于获取字符串的子串 str substr begin length 用于截取str中以begin为下标长度为length的字串 string s asd s s substr 0 1 结果为a 2 f
  • 逆变器和Modbus浅理解

    最近有兄弟去了能源部门 刚好跟着学了一些相关的知识 撇在这记录一下 当然理解的可能不是很正确 尤其Modbus协议压根没有写过 轻喷
  • php 怎么接受流数据类型_PHP数据类型

    PHP 支持 9 种原始数据类型 四种标量类型 boolean 布尔型 integer 整型 float 浮点型 也称作double string 字符串 三种复合类型 array 数组 object 对象 callable 可调用 两种特