【PHP+代码审计】PHP基础——数据类型

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

一、数据类型简介

PHP的八种类型

类型转换

类型判断

二、整数类型


一、数据类型简介

数据类型:data type,在PHP中指的是存储的数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型。

PHP的八种类型

在PHP中将数据分为三大类八小类:

简单(基本)数据类型:4个小类

整型:int/integer,系统分配4个字节存储,表示整数类型(有前提)

浮点型:float/double,系统分配8个字节存储,表示小数或者整型存不下的整数

字符串型:string,系统根据实际长度分配,表示字符串(引号)

布尔类型:bool/boolean,表示布尔类型,只有两个值:true和false

复合数据类型:2个小类

对象类型:object,存放对象(面向对象)

数组类型:array,存储多个数据(一次性)

特殊数据类型:2个小类

资源类型:resource,存放资源数据(PHP外部数据,如数据库、文件)

空类型:NULL,只有一个值就是NULL(不能运算)

类型转换

类型转换:在很多的条件下,需要指定的数据类型,需要外部数据(当前PHP取得的数据),转换成目标数据类型

在PHP中有两种类型转换方式:

1、 自动转换:系统根据需求自己判定,自己转换(用的比较多,效率偏低)

2、 强制(手动)转换:认为根据需要的目标类型转换

强制转换规则:在变量之前增加一个括号(),然后在里面写上对应类型:int/integer....其中NULL类型用到unset()

在转换过程中,用的比较多的就是转布尔类型(判断)和转数值类型(算术运算)

其他类型转布尔类型:true或者false,在PHP中比较少类型换变成false

其他类型转数值的说明

  • 1、 布尔true为1,false为0;

  • 2、 字符串转数值有自己的规则

    2.1 以字母开头的字符串,永远为0;

    2.2 以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)

php 复制代码
<?php
    //创建数据
    $a = 'abc1.1.1';
    $b = '1.1.1.abc';

    //自动转换
    echo $a . $b;  //算术运算,系统先转换成数值型(整数型和浮点型),然后再进行运输。

    //强制转换
    echo '<br/>',(float)$a,(float)$b;

类型判断

通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为true,失败为false):是一组以is_开头后面跟类型名字的函数:is_XXX(变量名)

Bool类型不能用echo来查看,可以使用var_dump结构查看

php 复制代码
var_dump(变量名)

还有一组函数可以用来获取以及设定数据(变量)的类型

php 复制代码
gettype(变量名):获取类型,得到的是该类型对应的字符串

php 复制代码
Settype(变量名,类型):设定数据类型:与强制转换不同
  • 1、 强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)
  • 2、 settype会直接改变数据本身

代码:

php 复制代码
<?php
    //创建数据
    $a = 'abc1.1.1';
    $b = '1.1.1.abc';

    //自动转换
    echo $a . $b;  //算术运算,系统先转换成数值型(整数型和浮点型),然后再进行运输。

    //强制转换
    echo '<br/>',(float)$a,(float)$b;

    echo "<br/>";

    var_dump($a);
    echo "<br/>";
    var_dump(is_int($a));
    echo "<br/>";
    var_dump(is_string($a));
    echo "<hr/>";

    echo gettype($a),"<br/>";

    //设置类型
    var_dump(settype($a,"int"));
    echo "<br/>";
    echo gettype($a),$a;

二、整数类型

整数类型:保存整数数值(范围限制),4个字节存储数据,最大就是32位:42亿多。但是在PHP中默认是有符号类型(区分正负数)

在PHP中提供了四种整型的定义方式:十进制定义,二进制定义,八进制定义和十六进制定义

$a = 120; //10进制

$a=0b110; //2进制

$a=0120; //8进制

$a=0x120; //16进制

十进制:逢10进1,能够出现的数字是0-9

二进制:逢2进1,能够出现的数字是0-1

八进制:逢8进1,能够出现的数字是0-7

十六进制:逢16进1,能够出现的数字是0-9以及a-f,a表示10,依次类推

二进制到十进制之间的转换:从右侧开始,将对应的第几位作为2的指数,然后将所有的结果相加

PHP中不需要用户这么复杂的去计算,提供了很多的函数进行转换

  • Decbin():十进制转二进制
  • Decoct():十进制转八进制
  • Dechex():十进制转十六进制
  • Bindec():二进制转十进制
相关推荐
带带老表学爬虫2 分钟前
java数据类型转换和注释
java·开发语言
qianbo_insist5 分钟前
simple c++ 无锁队列
开发语言·c++
QMCY_jason12 分钟前
Ubuntu 安装RUST
linux·ubuntu·rust
BigYe程普15 分钟前
我开发了一个出海全栈SaaS工具,还写了一套全栈开发教程
开发语言·前端·chrome·chatgpt·reactjs·个人开发
慕雪华年15 分钟前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
彭于晏68917 分钟前
Android广播
android·java·开发语言
苦逼IT运维31 分钟前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
弱冠少年43 分钟前
websockets库使用(基于Python)
开发语言·python·numpy
长天一色44 分钟前
C语言日志类库 zlog 使用指南(第五章 配置文件)
c语言·开发语言
仍有未知等待探索1 小时前
Linux 传输层UDP
linux·运维·udp