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"。 - 返回布尔值类型:对于布尔值,
g
ettype()
返回 "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个都会答错”这道题的现象,大模型的数学能力引发讨论。 “从技术人员…...
MacBook电脑远程连接Linux系统的服务器方法
一、问题简介 Windows 操作系统的电脑可使用Xshell等功能强大的远程连接软件。通过连接软件,用户可以在一台电脑上访问并控制另一台远程计算机。这对于远程技术支持、远程办公等场景非常有用。但是MacBook电脑的macOS无法使用Xshell。 在Mac上远程连接到Windows服…...
CSS-0_3 CSS和单位
文章目录 CSS的值和单位属性值长度单位CSS和绝对单位CSS和相对单位百分比em & rem视口 颜色单位 碎碎念 CSS的值和单位 我们知道,CSS是由属性和属性值所组成的表 随着CSS的发展,属性不说几千也有几百,我从来不支持去背诵所有的可能性。…...
【代码随想录|贪心算法 455. 分发饼干 376. 摆动序列 53. 最大子数组和】
代码随想录|贪心算法 455. 分发饼干 一、455. 分发饼干1.代码2.问题 二、376. 摆动序列1.代码 三、53. 最大子数组和1.代码 总结 python 一、455. 分发饼干 455. 分发饼干 1.代码 代码如下(示例): class Solution:def findContentChildr…...
swift小知识点(二)
1、 Swift 枚举 Swift 中使用 enum 关键词来创建枚举并且把它们的整个定义放在一对大括号内: enum enumname {// 枚举定义放在这里 } 如下事例: // 定义枚举 enum DaysofaWeek {case Sundaycase Mondaycase TUESDAYcase WEDNESDAYcase THURSDAYcase…...
机器人产业发展格局多元化,创业公司突破瓶颈需多维施策
当前,机器人产业的发展格局呈现出多元化、快速增长和技术不断创新的特点。从全球视角来看,机器人市场持续增长,预计到2026年全球人形机器人市场规模将超过20亿美元,到2030年有望突破200亿美元,显示出巨大的市场潜力和发…...
接口测试JMeter-1.接口测试初识
第一章 接口测试初识 1. 接口测试理论基础 “接口测试”一个让人觉得非常高大上的名词,特别是对于刚入门的测试同学而言。随着测试技术不断的深化,“接口测试”出现在我们视野中的频次越来越高。那么接口测试到底是如何做的?接口测试的优势又…...
[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-22 TPG图像测试数据发生器设计
软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…...
如何通过企业微信会话存档保护企业利益?
赵总: 张经理,最近行业内频发数据泄露事件,我们的客户资料和内部沟通记录安全吗? 张经理: 赵总,我们已经采取了一系列措施来加强数据安全。特别是针对企业微信的沟通记录,我们最近引入了安企神软件,它能很…...
git修改提交姓名
git config --global user.name “新用户名” git config --global user.email “新邮箱地址” 修改提交的用户名 git config --global user.name “yu***”...
5、在共享内存无指针编程:句柄HANDLE转换为指针
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 共享内存里面不能用指针&#…...
广州嘉怡服饰有限公司网站建设/厦门网页搜索排名提升
maven jar包冲突 ************************** jar 包冲突 冲突原理:不同的dependency依赖同一jar包的不同版本,导致冲突 A 》 B 》E1C 》 D 》E2 A、C底层依赖于E的不同版本,可能会导致冲突 冲突jar包加载原则 依赖路径最短的优先加载 路…...
wordpress 邮箱留言/品牌网
紫上给得比较奇怪,其实没有必要用唯一分解定理。我觉得这道题用唯一分解只是为了表示大数。 但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出。其实直接边乘边除就好了。因为答案保证不会溢出, 设定一个精度范围,如果中间结…...
山西建设厅官方网站/网络推广方案设计
whereis # 选项:# -b:查看二进制文件;[rootZTT ~]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz [rootZTT ~]# whereis -b ls ls: /usr/bin/ls...
怎样创建网站赚钱/线下广告投放渠道都有哪些
1. softmax 函数求导 求导之前我们先了解softmax 函数,softmax一般是用来作为网络的输出层,直接输出概率信息,定义如下: 那么我们对softmax 函数 进行求导,为了简洁把求和里面的一大堆用 简写: ①当 i j …...
周口学做网站/网站之家
2019独角兽企业重金招聘Python工程师标准>>> 一、点击链接 https://natapp.cn/ 注册个免费的账户 NATAPP官网 二、登陆进去以后查看authtoken。复制这个,等下要在客户端用到! 分配的authtoken 三、点击右侧配置,做一下配置&#x…...
wordpress广告插件中文/怎么查百度收录
【题目描述】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 【解题思路1】暴力解法 //1.若给定的节点pNode的右子树不为空,则中序遍历…...