PHP基础语法(一)
一、初步语法
1、PHP代码标记:以 <?php 开始,以 ?> 结束;

2、PHP注释:行注释://(双斜杠)或# 块注释:/* */
3、PHP语句分隔符:
1)在PHP中,代码以行为单位,系统需要通过判断行的结束,通常都用;(英文状态下)表示结束。
说明:PHP中标记结束符?>有自带语句结束符的效果,最后一行PHP代码可以没有语句结束符“;”。
2)PHP中很多代码的书写并不是全嵌入到HTML中,而是单独存在,所以可以不使用标记结束符?>,PHP会自动从开始到最后全部认为是PHP代码,从而解析。

二、变量
1、变量是用来存储数据的; 2、变量是存在名字的;
3、变量是通过名字访问数据的; 4、变量的数据是可以改变的。
变量的使用
1、定义:在系统中增加对应的变量名字(在内存中开发一块地)
2、赋值:将数据赋值给变量(在定义时直接初始化)
3、可通过变量名访问数据
4、变量可从内存中删除
变量命名规则
1、变量名字必须以"$"开头;
2、变量名可由数字、字母、下划线命名,但必须以字母和下划线开头;
3、允许中文变量;(不建议)
// 定义时不需要关键字,但必须使用$符号
$var1;
$var2 = 1;
echo $var2; // 访问变量,通过变量名找到数据,并显示
$var2 = 2; // 修改变量
echo '<hr/>',$var2; // 'hr' 为下划线,分隔符
unset($var2); // 删除变量,从内存中剔除
echo $var2; // 此时会报错,因为不存在变量
预定义变量
即提前定义的变量,由系统定义的变量,存储许多要用到的数据(预定义变量都是数组)。
$_SERVER:
- 包含服务器和执行环境信息的数组,例如 HTTP 头、路径、脚本位置等。
$_GET:
- 包含通过 URL 参数传递给当前脚本的变量的数组。
$_POST:
- 包含通过 HTTP POST 方法传递给当前脚本的变量的数组。
$_REQUEST:
- 包含了 $_GET、$_POST 和 $_COOKIE 的内容的数组。不建议过度依赖,因为它可能包含未预期的数据,尤其是在处理表单数据时。
$_SESSION:
- 包含当前会话中的会话变量的数组。需要先调用
session_start()函数开启会话。$_COOKIE:
- 包含通过 HTTP Cookies 传递给当前脚本的变量的数组。
$_FILES:
- 包含上传文件的信息的数组。这个变量由文件上传的表单使用。
$_ENV:
- 包含环境变量的数组。
$_GLOBALS:
- 包含了全部变量的全局作用域数组,变量的名称就是数组的键。
可变变量
如果一个变量保存的值刚好是另外一个变量的名字,则可直接通过访问一个变量得到另外一个变量的
值:但需在变量前多加一个$符号
$a = 'b'; // a变量的内容正好是b变量的名称,故称a为可变变量
$b = 'bb';
echo $$a; // 使用时需加一个$符号
变量传值
将一个变量赋值给另一个变量:值传递、引用传递
值传递:将变量保存的值复制一份,并将该值给另外一个变量保存(两个变量无关系)
// 值传递
<?php
// 2.1 执行此行,在栈区开辟一块内存存储$a,在数据段中开辟一块内存保存值1。然后将1所在位置赋值
//给a变量
$a = 1;
// 2.2 栈区开辟存储$b;发现是赋值运算,故会取出$a的值,
// 并在数据段重新开辟一块内存并保存,且再把新开辟地址赋值给栈区的变量b
$b = $a; // 值传递
// 2.3 执行该行
$b = 2;
echo $a,$b;//a=1,b=2
引用传递:将变量保存值所在的内存地址传递给另外一个变量,两个变量同指一块内存(名字不一样而已),可以通过在函数定义时在参数前面加上 & 符号来指示参数是引用传递的。
通常情况下,PHP 函数中的参数是通过值传递的,这意味着函数内部对参数的修改不会影响到函数外部的变量。但是,通过引用传值,函数可以直接修改调用者传递的变量本身,而不是变量的副本。
function increment(&$value) {$value++;
}$num = 5;
increment($num);
echo $num; // 输出 6
/* $num 是一个普通的变量,但是当它作为 increment 函数的参数时,前面的 & 符号表示这是一个引用传递的参数。因此,函数内部对 $value 的增加操作直接影响到了函数外部的 $num 变量,使得 $num 的值变为 6。 */
常量
常量的基本概念
const/constant:是在程序运行中,不可改变的量(数据);常量一旦定义,通常不可更改。
定义方式
1、使用定义常量的函数:define('常量名',常量值)——类似于c++的 #define
2、const
<?php
// 使用函数定义常量
define('PI',3.1415); // 注意此处与c++不同,#define 为预处理命令,宏定义,无需加;。
// 使用const关键字定义
const PI = 3;
// 定义特殊常量
define('^-^','smile');
// const ^-^ // 报错
// 访问常量
echo PI;
// echo ^-^ // 报错
constant('^-^'); // 特殊常量的访问,加引号
// 系统常量
echo '<hr/>',PHP_VERSION,'<br/>',PHP_INI_SIZE,'<br/>',PHP_INI_MAX; // 有符号整形
// 魔术常量
echo '<hr/>',__DIR__,'<br/>',__FILE__,'<br/>',__LINE__;
echo __LINE__; // 输出的行数会变
常量命名规则:
1、常量不需要使用"$"符号,一旦使用被认为是变量;
2、变量名可由数字、字母、下划线命名,但必须以字母和下划线开头;
3、常量的名字通常是以大写字母为主(与变量以示区别);
4、常量命名的规则比变量要松散,可以使用一些特殊字符(该方式只能使用define定义);
5、定义常量通常不区分大小写,但可以区分(define函数的第三个参数);
系统常量
魔术常量:由双下划线+常量名+双下划线组成,其值会随着环境变化而变化,用户无法改变。
echo "当前文件路径:" . __FILE__; // 输出当前文件的路径和文件名
echo "当前行号:" . __LINE__; // 输出当前行号
echo "当前函数名:" . __FUNCTION__; // 如果在函数内部使用,则输出当前函数名
echo "当前类名:" . __CLASS__; // 如果在类内部使用,则输出当前类名
echo "当前命名空间:" . __NAMESPACE__; // 如果在命名空间内部使用,则输出当前命名空间
数据类型
数据类型:data type,在PHP中指的是数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型。
基本数据类型:
整数(Integer):
- 表示整数值,例如
42或-123.浮点数(Floating point numbers):
- 表示带有小数点的数值,例如
3.14或-0.001.字符串(String):
- 表示文本数据,可以使用单引号
'或双引号"包裹,例如'Hello, World!'.布尔值(Boolean):
- 表示逻辑值,可以是
true或false.空值(Null):
- 表示一个变量没有值,使用关键字
null表示。复合数据类型:
数组(Array):
- 用于存储多个值的有序集合,可以是索引数组(按数字索引)或关联数组(按字符串键索引)。
对象(Object):
- 表示自定义数据结构,通过类实例化得到,包含属性和方法。
特殊数据类型:
资源(Resource):
- 表示外部资源(例如数据库连接、文件句柄等),由一些 PHP 函数返回。
回调类型(Callable):
- 表示可以被调用的函数或方法。
伪类型:
mixed:
- 表示可以是多种不同类型的值。
void:
- 表示没有返回值的函数的返回类型。
类型转换:
PHP 是一种弱类型语言,意味着在大多数情况下,它会自动转换变量的类型以匹配操作的要求。例如,将字符串 "123" 转换为整数 123,或者将整数 456 转换为字符串 "456"。
类型检测和转换函数:
PHP 提供了一些函数来进行类型检测和类型转换,如 is_int()、is_string()、(int)、(string) 等,用于检查变量的类型或者强制类型转换。
转换说明:
1、以字母开头的字符串,永远为0;
2、以数字开头的字符串,取到碰到字符串为止。(不会同时包含两个小数点)
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// 自动转换。算术运算,系统先转化为数值类型,然后运算
echo $a+$b; // 结果为1.1(0+1.1)
// 强制转换
echo '<br/>',(float)$a,(float)$b; // 0,1.1
// 类型判断
echo '<hr/>';
var_dump(is_int($a)); // bool(FALSE)
var_dump(is_string($a)); // bool(TRUE)
// 获取数据类型
echo '<hr/>';
echo gettype($a); // string(虽然前面强制转换了,但并未改变本身)
// 设置类型
// var_dump 输出展示展示代码内容,结构与类型。该函数作可以窥探所有内容的类型,以及内部信息
var_dump(settype($b,'int')); // 先将字符串转换为int型,转换成功返回true,var_dump判断
是否为bool型,故显示 bool(true)
echo gettype($b),$b; // interger 1
var_dump() 是 PHP 中一个非常有用的调试函数,它能够输出一个或多个表达式的详细信息,包括其类型和值。主要用途包括:
-
输出变量的类型和值:
var_dump()可以输出变量的数据类型(例如整数、字符串、数组等)以及其具体的值。
-
输出数组和对象的结构:
- 对于数组和对象,
var_dump()能够逐层显示其结构,包括每个元素或属性的类型和值。
- 对于数组和对象,
-
输出 NULL 的信息:
- 对于
null值,var_dump()显示NULL。
- 对于
-
输出布尔值的信息:
- 对于布尔值
true和false,var_dump()显示bool(true)和bool(false)。
- 对于布尔值
gettype() 是 PHP 中的一个函数,用于获取给定变量的数据类型,并返回其类型的字符串表示。
$var1 = 42;
$var2 = "Hello";
$var3 = array(1, 2, 3);
$var4 = null;
$var5 = true;echo gettype($var1); // 输出:integer
echo gettype($var2); // 输出:string
echo gettype($var3); // 输出:array
echo gettype($var4); // 输出:NULL
echo gettype($var5); // 输出:boolean
主要特点和注意事项:
- 返回值:
gettype()返回一个字符串,表示变量的数据类型。 - 适用范围:适用于所有类型的变量,包括整数、浮点数、字符串、数组、对象、NULL 和布尔值等。
- 区分对象类型:对于对象,
gettype()返回 "object",但无法详细显示其类名。如果需要获取对象的类名,应该使用get_class()函数。 - 获取资源类型:对于资源(例如数据库连接资源),
gettype()返回 "resource"。 - 返回布尔值类型:对于布尔值,
gettype()返回 "boolean",而不是 "bool"。
$handle = fopen('example.txt', 'r');
echo gettype($handle); // 输出:resourceclass MyClass {}
$obj = new MyClass();
echo gettype($obj); // 输出:object// 使用 get_class 获取对象的类名
echo get_class($obj); // 输出:MyClass
settype() 是 PHP 中的一个函数,用于将变量转换为指定的数据类型。
$var1 = "42";
$var2 = "3.14";
$var3 = "true";
$var4 = "Hello";
$var5 = "null";settype($var1, "integer"); // 将 $var1 转换为整数
settype($var2, "float"); // 将 $var2 转换为浮点数
settype($var3, "boolean"); // 将 $var3 转换为布尔值
settype($var4, "string"); // $var4 已经是字符串,这里只是示意
settype($var5, "null"); // $var5 是字符串 "null",这里只是示意echo $var1; // 输出:42
echo $var2; // 输出:3.14
echo $var3; // 输出:1 (true 被转换为布尔值 true)
echo $var4; // 输出:Hello (未改变)
echo $var5; // 输出:null (未改变)
主要特点和注意事项:
- 返回值:
settype()函数没有返回值,它会直接修改传入的变量。 - 适用范围:适用于标量类型的变量,包括整数、浮点数、布尔值和字符串。
- 布尔值转换规则:字符串 "true" 被转换为布尔值 true,其他非空字符串转换为布尔值 true,空字符串转换为布尔值 false。
- NULL 的处理:
settype()不会将变量设置为 null 类型,因为在 PHP 中 null 是一个特殊的值,而不是数据类型。 - 注意点:使用
settype()时,要确保目标类型与变量的当前值兼容,否则可能会导致意外的结果或错误。
$number = "12345";
settype($number, "integer");
echo $number; // 输出:12345$float_str = "3.14";
settype($float_str, "float");
echo $float_str; // 输出:3.14$bool_str = "false";
settype($bool_str, "boolean");
echo $bool_str; // 输出:1 ("false" 被转换为布尔值 true)$str = "Hello";
settype($str, "integer"); // $str 是字符串,不能转换为整数,结果是 0
echo $str; // 输出:0
相关文章:
PHP基础语法(一)
一、初步语法 1、PHP代码标记:以 <?php 开始,以 ?> 结束; 2、PHP注释:行注释://(双斜杠)或# 块注释:/* */ 3、PHP语句分隔符: 1)在PHP中&#…...
Python项目打包与依赖管理指南
在Python开发中,python文件需要在安装有python解释器的计算机的电脑上才能运行,但是在工作时,我们需要给客户介绍演示项目功能时并不一定可以条件安装解释器,而且这样做非常不方便。这时候我们可以打包项目,用于给客户…...
矿产资源潜力预测不确定性评价
研究目的: 不确定性评估: 到底什么叫不确定性,简单来说就是某区域内的矿产资源量,并不确定到底有多少,你需要给出一个评估或者分布。 研究方法: 1.以模糊集来表示某些量: 关于什么是模糊集&am…...
食堂采购系统开发:从需求分析到上线实施的完整指南
本篇文章,笔者将详细介绍食堂采购系统从需求分析到上线实施的完整过程,旨在为开发团队和管理者提供一个系统化的指南。 一、需求分析 1.用户需求 常见的需求包括: -采购计划管理 -供应商管理 -库存管理 -成本控制 -报表生成 2.系统功…...
C++ 数据结构
C 数据结构 引言 数据结构是计算机科学中的一个核心概念,它涉及到如何在计算机中组织和存储数据,以便高效地进行数据访问和修改。C作为一种高效的编程语言,提供了丰富的内置数据类型和库,支持各种复杂的数据结构实现。本文将探讨…...
Elasticsearch:评估搜索相关性 - 第 1 部分
作者:来自 Elastic Thanos Papaoikonomou, Thomas Veasey 这是一系列博客文章中的第一篇,讨论如何在更好地理解 BEIR 基准的背景下考虑评估你自己的搜索系统。我们将介绍具体的技巧和技术,以便在更好地理解 BEIR 的背景下改进你的搜索评估流程…...
超声波清洗机哪款好用?保姆级教学,教你手把手挑选适合自己的超声波清洗机
提及超声波清洗机,大家都不陌生,尤其是佩戴眼镜的小伙伴,眼镜的镜片长时间不清洁容易模糊不清,而超声波清洗机的出现,可以轻松清洗还不会损坏镜片,备受眼镜党喜爱。但由于现在市面上的超声波清洗机的款式太…...
vscode常用组件
1.vue-helper 启用后点击右下角注册,可以通过vue组件点击到源码里面 2.【Auto Close Tag】和【Auto Rename Tag】 3.setting---Auto Reveal Exclude vscode跳转node_modules下文件,没有切换定位到左侧菜单目录> 打开VSCode的setting配置ÿ…...
IDEA创建普通Java项目
环境准备 Java环境 运行javac查看java环境是否安装完成 开发工具Intellij IDEA 下载地址:https://www.jetbrains.com/idea/download/?sectionwindows 创建项目 点击新建项目 填入项目名字,项目路径,选择maven,点击下面的创建 运行项目 …...
华为“铁三角模式”在数据类项目中的应用和价值
引言:随着信息技术的飞速发展,企业纷纷踏上数字化转型的道路,希望通过数据分析和智能决策来提升企业竞争力。在这一过程中,数据类项目成为关键,它们旨在构建高效的数据治理和分析平台,为企业决策提供有力支…...
P1-AI产品经理--九五小庞
产品经理的定位 AI基于现有业务挖掘AI应用场景,服务提供商选择及算法定制等,配合已有产品完成整体产品工工资基于从事医疗行业的考虑,我们走的应该是AI产品经理(软件型) AI产品经理(行业型) AI…...
PHP手边酒店多商户版平台小程序系统源码
🏨【旅行新宠】手边酒店多商户版小程序,一键解锁住宿新体验!🛌 🌈【开篇:旅行新伴侣,尽在掌握】🌈 还在为旅行中的住宿选择而纠结吗?是时候告别繁琐的搜索和比价过程&a…...
计算机视觉7 kag比赛
Kaggle 是一个非常知名的数据竞赛平台,提供了许多计算机视觉相关的竞赛项目,以下是一些在 Kaggle 上可能会遇到的计算机视觉项目类型及相关的简单介绍和示例: 图像分类:给定一组图像,任务是将它们分类到不同的类别中。…...
Go 协程通道使用注意
目录 关闭channel 引入 不关闭通道是有风险的,主要存在两条: 如何优雅的关闭? 1.只有一个发送者 2.多个发送者 判断通道是否关闭 有缓存和无缓存的通道有什么区别? 错误的关闭通道 关闭channel close(chan):关…...
React基础学习-Day04
React基础学习-Day04 常见的钩子函数及基础使用方式 1.useState useState 是 React 的一个 Hook,用于在函数组件中添加状态。它返回一个状态变量和一个更新该状态的函数。与类组件的 this.state 和 this.setState 相对应,useState 让函数组件也能拥有…...
python爬虫获取网易云音乐评论歌词以及歌曲地址
python爬虫获取网易云音乐评论歌词以及歌曲地址 一.寻找数据接口二.对负载分析三.寻找参数加密过程1.首先找到评论的请求包并找到发起程序2.寻找js加密的代码 四.扣取js的加密源码1.加密函数参数分析①.JSON.stringify(i0x)②bse6Y(["流泪", "强"])③bse6Y…...
中间件的理解
内容来源于学习网站整理。【一看就会】什么是前端开发的中间件?_哔哩哔哩_bilibili 每日八股文~白话说mq,消息中间件_哔哩哔哩_bilibili 例如: 1)两个人打电话,中间的通信网络就是中间件。 2)菜鸟驿站&…...
django实现用户的注册、登录、注销功能
创建django项目的步骤:Django项目的创建步骤-CSDN博客 一、前置工作 配置数据库,设置数据库引擎为mysql 1、在settings文件中找到DATABASES, 配置以下内容 DATABASES {"default": {ENGINE: django.db.backends.mysql, # 数据库引擎NAME: dja…...
【JAVA 常用API】数据库字段存储JSON格式数据,JAVA中如何将List<Entity>或者对象实体转换为字符串
在Java中,可以使用第三方库如Jackson或Gson来进行JSON的转换。这些库提供了将Java对象转换为JSON字符串的方法。 一:Gson API转Json Getter Setter NoArgsConstructor AllArgsConstructor ToString Builder public class Person {private String name;p…...
AI算不出9.11和9.9哪个大?六家大模型厂商总结了这些原因
大模型“答对”或“答错”其实是个概率问题。关于“9.11和9.9哪个大”,这样一道小学生难度的数学题难倒了一众海内外AI大模型。7月17日,第一财经报道了国内外“12个大模型8个都会答错”这道题的现象,大模型的数学能力引发讨论。 “从技术人员…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
