PHP入门及数据类型

PHP数据类型

  1. PHP标记
//HTML风格
<?phpecho "hello world";
?>
//简短风格
<?echo "hello world";
?>
  1. 数据类型
    PHP 最初源于 Perl 语言,与 Perl 类似,PHP 对数据类型采取较为宽松的态度。PHP 规定,变量数据类型会根据程序中的逻辑自动设置。这意味着,在 PHP 脚本运行时,用户有时候甚至没有机会决定一个变量的类型是一个数值还是字符串,亦或是其他数据类型。
    虽然这一点很灵活,但有时也会导致一些小问题的出现:如果不将某个变量指定为所需要的数据类型,那么在 PHP 脚本运行时,它可能会变成其它的数据类型,从而导致计算错误。 不过我们也不用太过担心,因为我们可以将变量强制声明为我们想要的数据类型。
    PHP 的数据类型可以分为三大类,分别是标量数据类型、复合数据类型和特殊数据类型
    标量数据类型
    标量数据类型是数据结构的最基础单元,只能存储一个数据。在 PHP 中的标量数据类型分为四种,如下表所示:
    在这里插入图片描述
  2. 字符串
    字符串是连续的字符序列,在其它语言中,字符和字符串是两种不同的数据类型,但在 PHP 中,统一将字符和字符串当作字符串数据类型。在 PHP 中,定义字符串有三种方式,分别是单引号方式、双引号方式、Heredoc 方式
<?php
//双引号声明字符串,双引号可以解析特殊符号
$str = "hello world";
//echo $str;
//输出hello world//双引号可以解析特殊符号
$str = "hello world <br/> jack";
echo $str;
//输出hello world---><br/>换行
//jackecho "<br>";//也可以解析变量
$add = 10;
echo "我有{$add}块";
//输出我有10块//单引号的方式声明字符串是纯字符串,不具备解析能力
$str = 'hello world';
echo $str;
//输出hello world
echo "<br>";//使用Heredoc方式定义字符串
$str = <<<EOF
url:http//www.baidu.com
EOF;
echo $str;
//输出url:http//www.baidu.com
  1. 整形
    在 PHP 中,整型变量称为 integer 或 int 类型,用来表示一个整数,整型的规则如下所示:
    整型必须至少有一个数字(0~9);
    整型不能包含逗号或空格;
    整型不能包含小数点;
    整型可以是正数或负数。
    整型的取值范围必须介于 -2E31 到 2E31 之间,可以用三种格式来表示,即十进制、十六进制(以 0x 为前缀)和八进制(以 0 为前缀)。
    下面通过示例来演示一下整型的使用,示例中使用到了 PHP 的 var_dump() 函数,该函数可以返回变量
    的数据类型和值
$x = 5892; //定义一个整形的变量
var_dump($x); // 输出变量的类型 int(5892)
echo $x;
// 输出5892
echo "<br>";$x = 0x8c; //定义十六进制
var_dump($x);// 输出int(140)echo "<br>";$x = 047; //定义八进制
var_dump($x); //输出int(39)
  1. 浮点型
    浮点型在 PHP 中被称为 float 类型,也可称为实数,可以用来存储整数和小数,有效的取值范围是
    1.8E-308 到 1.8E+308 之间。浮点数的精确度比整型数据类型要高。
$num1 = 10.365;
$num2 = 2.4e3;
$num3 = 8E-5;
var_dump($num1, $num2, $num3);
//输出float(10.365) float(2400) float(8.0E-5)
  1. 布尔类型
    布尔型只有两种值,分别是 TRUE 和 FALSE(不区分大小写),意为逻辑真和逻辑假。示例代码如下:
<?php$x = True;$y = faLsE;var_dump($x, $y);//输出bool(true) bool(false)?>
  1. 复合数据类型
    复合数据类型允许将多个类型相同的数据聚合在一起,表示为一个实体项。复合数据类型包括数组
    (Array)和对象(Object)。

数组
数组是一组数据的集合,是将数据按照一定规则组织起来形成的一个整体。数组的本质是存储管理和操
作一组变量。按照数组的维度划分,可以有一维数组、二维数组和多维数组。我们可以使用 array() 函数
来创建数组。

//数组
//定义一个数组
//这个数组中还包含一个数组
$list = ["name" => "jack","age" => 20,"sex" =>["date" => "wu","time" => "2025-12-12"],1
];
echo "<pre>";//<pre>是一个HTML标签,作用是用来格式化输出
print_r($list);
echo "</pre>";
//输出是一个个键值对,如数组中有数字,他的键就是下标,如下:
//Array
//(
//    [name] => jack
//    [age] => 20
//    [sex] => Array
//          (
//              [date] => wu
//              [time] => 2025-12-12
//          )
//
//    [0] => 1
//)
//获取数组里的元素可以用下标取也可以使用键来取
echo $list[0];
echo "<br>";
echo $list["name"];
//输出:
//1
//jack
  1. 变量
    直接赋值:直接赋值就是使用“=”直接将值赋给某变量,示例代码如下:
<?php$name = "PHP好牛逼";echo $name;?>

拷贝赋值:拷贝赋值就是将一个变量的值,“复制”一份,再传给另一个变量。这两个变量都是相互独立的,它们之
间没有任何关系,修改其中一个变量的值,另一个变量不会变

<?php$a = 100;$b = $a;    
// 将$a的值复制一份,传给$b$a = 200;   // 重新为 $a 赋值
echo '$a = '.$a.', $b = '.$b;?>

引用赋值:引用赋值就是将一个变量的内存地址,“复制”一份,传给另一个变量。这两个变量代表的是同一个值。
改变其中一个,另一个也会改变。实现引用赋值需要在被引用的变量前加上“&”符号

$a = 100;//定义变量a为100
$b = $a;// 将$a的值复制一份,传给$b
echo $b;//输出100echo "<br>";$a = 200;//改便变量a的值为200,变量b的值不会改变
echo '$a = '.$a.'$b = '.$b;
//输出$a = 200$b = 100

预定义变量
预定义变量又叫超全局变量,它们不需要提前声明就可以在所有的作用域中使用。通过这些预定义变量
可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。
常用的预定义变量如下:

$_GLOBALS:全局作用域中的全部可用变量;
$_SERVER:服务器和执行环境的信息;
$_REQUEST:包含了 $_GET$_POST$_COOKIE 的所有信息;
$_POST:通过 POST 方法提交的数据;
$_GET:通过 GET 方法提交的数据;
$_FILES:通过 POST 方式上传到服务器的文件数据;
$_ENV:通过环境方式传递给当前脚本的变量组成的数组;
$_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量所组成的数组;
$_SESSION:当前脚本可用 SESSION 变量组成的数组。

常量
所谓常量就是不能改变的量,PHP 中常量一旦被定义,就不能被修改或取消定义。
PHP 常量通常用来存储一个不被改变也不希望变化的数据,该数据只能是四种标量数据类型的数据:整
型、浮点型、字符串、布尔型,与变量相比,常量具有以下几个特点:
·常量前面没有美元符号($);
·常量只能用 define() 和 const 定义;
·常量的作用域是全局的;
·常量一旦被定义就不能被重新定义或者取消定义。

定义常量

合法的常量名只能以字母和下划线开始,后面可以跟着任意长度的字母、数字或下划线。在 PHP 中可以
通过 define() 函数定义一个常量,define() 函数的语法如下: 
define(string $name, mixed $value [, bool $case_insensitive = false]) 
define() 函数参数的说明如下表所示:

在这里插入图片描述

除了可以使用 define() 函数之外,还可以使用 const 关键字来定义常量,const 关键字的语法如下: 
const 常量名 = 常量值; <?php
//WebSite是变量名
define('WebSite', 1);
const url = 'http://www.baidu.com';
echo WebSite.'<br>';
echo url;
//输出1 http://www.baidu.com?>

判断常量是否存在

要判断一个常量是否已经定义,可以使用 defined() 函数。函数的语法格式如下: 
defined(string $name) 
其中 $name 为待判断的常量名称,函数会返回一个 bool 类型的值,常量已定义则返回 true,未定义则
返回 falsedefine('WebSite', 1);
const url = 'http://www.baidu.com';
var_dump(defined('WebSite'));
echo '<br>';
var_dump(defined('url'));
  1. 运算符
    算术运算符
    算术运算(Arithmetic Operators)符是处理四则运算(加、减、乘、除四种运算)的符号,在数字的
    处理中应用得最多。常用的算术运算符如下:
    在这里插入图片描述
 $a = -100;$b = 70;$c = 20;echo '$a = '.$a.', $b = '.$b.', $c = '.$c.'<br>';echo '$a + $b = '.($a + $b).'<br>';echo '$a - $b = '.($a - $b).'<br>';echo '$a * $c = '.($a * $c).'<br>';echo '$b / $c = '.($b / $c).'<br>';echo '$b % $c = '.($b % $c).'<br>';

字符串运算符
字符串运算符只有一个,即英文的句号“.”,它可以将两个字符串连接起来,拼接成一个新的字符串。使
用过 C 或 Java 语言的读者应注意,PHP 里的“+”只能用作赋值运算符,而不能用作字符串运算符。

<?php$str1 = 'hello';$str2 = 'world';$str3 = $str1.$str2;echo $str3;?>

赋值运算符
最基本的赋值运算符是“=”,用于对变量进行赋值操作,而其他运算符可以和赋值运算符“=”联合使用,构
成组合赋值运算符。赋值运算符是把基本赋值运算符“=”右边的值赋给左边的变量。
在这里插入图片描述

<?php$a = 9;$b = 6;echo '$a = '.$a.', $b = '.$b.'<br>';echo '$a += $b 的值为:'.($a += $b).'<br>';echo '$a -= $b 的值为:'.($a -= $b).'<br>';echo '$a *= $b 的值为:'.($a *= $b).'<br>';echo '$a /= $b 的值为:'.($a /= $b).'<br>';?>

递增和递减运算符
算术运算符适合在有两个或者两个以上不同操作数的场合使用,但是当只有一个操作数时,使用算术运
算符是没有必要了。这时就可以使用递增“++”或递减“–”运算符了。
一种是先将变量增加或者减少 1 后再将值赋给原变量,称为前置递增或递减运算符(也称前置自增
自减运算符);
一种是将运算符放在变量后面,即先返回变量的当前值,然后再将变量的值增加或者减少 1,称为
后置递增或递减运算符(后置自增自减运算符)。

<?php$a = 5;$b = 3;$c = 8;$d = 11;echo '$a = '.$a.', $b = '.$b.', $c = '.$c.', $d = '.$d.'<br>';echo '++$a = '.++$a.'<br>';echo '$b++ = '.$b++.'<br>';echo '--$c = '.--$c.'<br>';echo '$d-- = '.$d--.'<br>';?>

逻辑运算符
在这里插入图片描述
比较运算符
在这里插入图片描述
其中,我们要重点区分一下“等于”和“全等”,等于只是对两个变量的值进行了比较运算,而全等=不
仅会对运算符两边表达式的值进行比较,而且还会对数据类型进行比较,只有两边的值和数据类型都相
等时,运算结果才是 TRUE。
另外,“不等于”和“不全等”也是如此,不等于!=只对运算符两边表达式的值进行比较,而不全等!==不仅
会比较运算符两边表达式的值,还会对值的类型进行比较,当两边的值或者数据类型有任意一个不相等
时,运算结果才是 TRUE
三元运算符
三元运算符的语法格式如下:
(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3
如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。

<?php$a = 10;$a % 2 == 0 ? print '$a 是偶数!' : print '$a 是奇数!';?>

运算符优先级
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对具有相同优先级的运算符来说,从左向右的结合方向意味着将从左向右求值,从右向左结合方向则反
之。对于无结合方向的则具有相同优先级的运算符,该运算符有可能无法与其自身结合。例如在 PHP 中
1 < 2 > 1是一个非法语句,,而1 <= 1 == 1则不是,因为<=比==优先级高。

<?php$a = 3 * 4 % 5; // (3 * 4) % 5 = 2$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2$a = 1;$b = 2;$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5echo ++$a + $a++;?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91838.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

沸点 | 嬴图参加世界人工智能大会

2025 WAIC于 7 月 26 日至 28 日在上海举行。大会展览面积突破 7 万平方米&#xff0c;800 余家企业参展。嬴图作为图数据库领域的领先企业&#xff0c;携前沿技术与创新应用精彩亮相。​大会期间&#xff0c;嬴图创始人兼CEO孙宇熙与来自全球的顶尖学者、企业代表共同探讨人工…

2. 字符设备驱动

一、设备号 1.1. 什么是设备号 设备号是用来标记一类设备以及区分这类设备中具体个体的一组号码。 设备号由主设备号和次设备号组成。主设备号的作用为标记一类设备、用于标识设备驱动程序,而次设备号的作用是为了区分这类设备中的具体个体设备及用于标识同一驱动程序下的具…

uboot armv8 启动流程之 linker script

section 详细说明.text按如下顺序&#xff0c;中断向量表vectors, 启动入口代码start.o,普通text, glue &#xff08;arm thumb2 相互调用时自动生成的代码&#xff09;*(.vectors)CPUDIR/start.o (.text*)*(.text*)*(.glue*)__image_copy_start 标记为text 段入口&#xff0c;…

xxljob总结

XXL-Job 支持多种任务类型&#xff0c;以下是常见任务类型的示例 Demo&#xff0c;包含核心配置和代码片段&#xff0c;帮助快速理解用法&#xff1a;一、Bean模式任务&#xff08;最常用&#xff09;通过注解 XxlJob 定义任务方法&#xff0c;直接在 Spring 容器中管理&…

Python包安全工程实践:构建安全可靠的Python生态系统

在现代计算环境中&#xff0c;性能往往是Python包成功的关键因素。本文将深入探讨Python包的性能优化技术&#xff0c;包括并发编程模型、性能分析工具、内存优化策略以及原生代码集成等高级主题&#xff0c;帮助你构建高性能的Python组件。1. 性能分析基础1.1 性能分析工具矩阵…

kubernetes基础知识

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚&#xff1a; https://blog.csdn.net/qq_52914969?typeblog一、kubernetes介绍Kubernetes本质是一组服务器集群&#xff0c;它可以在集群的每个节点上运行特定的程序&#xff0c;来对节点中的容器进行…

winntsetup安装驱动和光驱安装F6功能一样----NT5.2.3790源代码分析

D:\drv>dir驱动器 D 中的卷是 新加卷卷的序列号是 443D-D64BD:\drv 的目录2025-08-03 23:57 <DIR> . 2025-08-03 23:57 <DIR> .. 2008-05-27 10:01 119,068 yk51x86.cat 2008-05-20 10:01 969,380 yk51x86.inf…

Web 开发 11

今天完成了workshop2&#xff0c;进度有点慢&#xff0c;但是记录一下极为愚蠢的一轮轮问答和思考~&#xff01;&#xff08;还是有点成就感的&#xff09;ps&#xff1a;【】内为我的提问1 导入语句&#xff08;ES6 模块导入语法&#xff09;【import CatHappiness from "…

写作路上的迷茫与突破

曾经&#xff0c;我也是那个在写作面前踌躇不前的人。每次提笔&#xff0c;满心都是“我写不好”“我没什么可写的”“我达不到别人的高度”……这些念头像藤蔓一样&#xff0c;紧紧缠绕着我&#xff0c;让我寸步难行。我看着群里的小伙伴们一个个妙笔生花&#xff0c;自己却只…

23 Active Directory攻击与防护策略解析

引言 Active Directory&#xff08;AD&#xff09;是企业IT环境中用户认证、访问控制和身份管理的核心。因其掌握整个网络的"钥匙"&#xff0c;AD常成为攻击者的首要目标。 从凭证转储到隐蔽侦察&#xff0c;攻击者通过多种手段控制AD。无论您是网络安全分析师、红…

【内容规范】关于标题中【】标记的使用说明

【内容规范】关于标题中【】标记的使用说明 在信息爆炸的时代&#xff0c;如何让内容更易识别、更具条理性&#xff0c;成为内容创作者和平台运营者共同关注的问题。标题中【】标记的使用&#xff0c;正是在这种需求下形成的一种实用规范。 这种规范的核心作用在于建立统一的内…

centos 9 安装docker教程

拉取相关依赖 dnf -y install dnf-plugins-core设置阿里云镜像库 dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plu…

关闭Jetbrains Mono字体连写、连字功能

所谓的关闭Jetbrains Mono字体连写&#xff0c;其实就是更换为Jetbrains Mono NL字体二者的区别就是符号间距的大小不同&#xff0c;也就是有无连字功能。 下图以Visutal Studio为例&#xff1a;

漫花软件集合分享

漫花软件集合分享的各种apk 1、磁盘漫画【推荐】 2、你搜 3、皮皮喵 4、泼辣漫画 5、趣漫画 6、异次元&图源 7、漫 8、再漫画X 9、章鱼漫画 10、芝士漫画&图源 通过网盘分享的文件&#xff1a;漫画软件 链接: https://pan.baidu.com/s/1dlGl50MNzzVOdTP38_…

DB-GPT 0.7.3 版本更新:支持Qwen3 Embedding和Reranker模型、支持知识库自定义检索策略等

V0.7.3版本主要新增、增强了以下核心特性 &#x1f340; 支持Qwen3 Embedding和Reranker模型 &#x1f340; 支持知识库自定义检索策略&#xff1a;语义检索、全文检索、树形检索、混合检索等 &#x1f340; 新增GaussDB数据源支持 &#x1f340; 支持GLM-4.1V多模态模型 …

Django常见模型字段

AutoField:数据库中的自动增长类型&#xff0c;相当于ID自动增长的IntegerField类型字段&#xff0c;对应mysql的Int类型 BooleanField:真/假的布尔类型字段&#xff0c;对应mysql的Tinyint类型 CharField:字符类型字段&#xff0c;对应mysql的varChar类型 DateField:日期字段&…

前端列表封面图如何自不同图片比例不变形

设置图片宽度100%时&#xff0c;若不设置高度&#xff0c;可能导致高度不足导致空白区域。如何实现图片高度自适应填充&#xff0c;避免空白区域&#xff1f;解决方式&#xff1a;加上height&#xff1a;100%&#xff1b;object-fit:cover&#xff1b;就可以始终剪切铺满&#…

记录一次Spring Cloud Gateway配置的跨域处理:解决 ‘Access-Control-Allow-Origin‘ 头包含多个值的问题

在微服务架构中&#xff0c;前端与后端分离已经成为一种常见模式。这种模式下&#xff0c;前后端通常会部署在不同的域名或端口上&#xff0c;这就导致了跨域资源共享&#xff08;CORS&#xff09;问题。最近&#xff0c;在我们的项目中&#xff0c;我们遇到了这样一个问题&…

扫雷游戏完整代码

扫雷游戏完整代码test.cgame.cgame.h

vue打包后如何在本地运行?

1.打包前的配置打开vue.config.js配置如图所示内容//打包配置文件 module.exports {assetsDir: static,parallel: false,publicPath: ./, };这段代码是Vue.js项目的打包配置文件&#xff0c;主要功能包括&#xff1a; - assetsDir: static - 设置静态资源文件夹名为static - p…