PHP变量

目录

变量的定义

预定义变量

$_SERVER

$_GET

$_POST

$_REQUEST

$_SESSION

$_FILES

变量作用域

global 关键字

static 变量

可变变量

完结


上一篇文章已经学习了PHP的数据类型,今天将学习新的内容:变量。

变量的定义

PHP 中变量用一个美元符号后面跟变量名来表示(如$a),变量名是严格区分大小写的,并且不能以数字开头。

<?php
    $a = 1;
    $b = 'test';
    $c = [1, 2, 3];
    $4d = 2;//非法变量名,以数字开头

预定义变量

像上面的例子这种是我们自定义的变量,在PHP中有一些已经定义好的变量称之为预定义变量。利用这些预定义变量我们可以处理很多问题、实现很多功能,比如通过$_GET、$_POST获取用户输入的数据、$_SERVER获取服务器和执行环境信息等等。接下来我们学习一下几个预定义变量。

$_SERVER

$_SERVER可以获取服务器和执行环境信息,下面配合示例进行简单介绍,如果想了解它包含的所有信息可以直接打印$_SERVER即可。

<?php
    var_dump($_SERVER['SERVER_NAME']);//域名,结果:string 'a.com'
    var_dump($_SERVER['SERVER_PORT']);//端口,结果:string '80'
    var_dump($_SERVER['REQUEST_METHOD']);//请求方式,结果:string 'GET'
    var_dump($_SERVER['REQUEST_URI']);//请求的URI,结果:/1.php

输出结果

$_GET

它是一个通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组。

<?php
    var_dump($_GET);

输出结果

可以看到我们通过URL的方式传递的两个参数服务器都接收到了。

$_POST

当POST请求的Content-type是application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前变量。

#示例,先创建1.php文件用于提交数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传Demo</title>
</head>
<body>

<form action="/2.php" method="post" enctype="multipart/form-data">
    账号:<input name="account"><br/>
    密码:<input name="password"><br/>
    <input type="submit" value="提交">
</form>

</body>
</html>

创建2.php接收数据

<?php
    var_dump($_POST);

访问1.php,填写并提交数据

提交后会自动跳转至2.php,执行结果如下

$_REQUEST

包含了$_GET,$_POST 和 $_COOKIE 的数组。跟上面的示例差不多,这里就不再演示了。

通过http方式请求时,如果有携带cookie,则会传递到这个变量中。

$_SESSION

session是一种存贮机制,$_SESSION变量可以获取到session的所有数据。

$_FILES

获取当前上传文件的相关信息,如名称、类型、大小、临时存放路径等。

#示例,先创建1.php文件,用于上传文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传Demo</title>
</head>
<body>

<form action="/2.php" method="post" enctype="multipart/form-data">
    <label for="fileUpload">选择文件:</label>
    <input type="file" id="fileUpload" name="file">
    <input type="submit" value="上传文件">
</form>

</body>
</html>

创建2.php文件用于接收上传的文件。

<?php
    var_dump($_FILES);

访问1.php,并选择文件上传

 点击上传之后会自动跳转到2.php,结果如下

变量作用域

变量的作用域是定义该变量的上下文。PHP 有函数作用域和全局作用域。在函数之外定义的任何变量都仅限于全局作用域。该怎么理解这句话呢,也就是说有函数作用域和全局作用域,函数之外定义的变量只能在全局作用域使用(即函数之外使用)。我们通过下面的例子辅助理解。

全局作用域变量,函数内部无法使用

<?php
    $a = 2;
    function test() {
        echo $a;
    }
    test();

结果

可以看到报错了:变量没有定义。

global 关键字

如果我们要使用这个$a,则需要使用到global关键字:global关键字用于将变量从全局作用域绑定到局部作用域。将创建引用同名全局变量的局部变量。如果全局变量不存在,则将在全局作用域内创建该变量并赋值为 null

#示例 使用global关键字

<?php
    $a = 2;
    function test() {
        global $a;
        echo $a;
    }
    test();

 执行结果

static 变量

变量作用域的另一个重要特性是 static 变量。静态变量仅在局部函数作用域中存在,但当程序执行离开此作用域时,其值并不丢失。

#示例,非静态变量例子

<?php
    function test() {
        $a = 2;
        echo $a . ' -- ';
        $a++;
    }
    //执行5次
    test();test();test();test();test();

执行结果

2 -- 2 -- 2 -- 2 -- 2 -- 

由于每次调用test方法,变量a都会重新赋值,所以执行结果都一样。

#示例,静态变量例子

<?php
    function test() {
        static $a = 2;
        echo $a . ' -- ';
        $a++;
    }
    //执行5次
    test();test();test();test();test();

执行结果

2 -- 3 -- 4 -- 5 -- 6 -- 

使用static关键字声明使得变量a成为了静态变量,因此它只会在第一次调用的时候执行初始化(即a=2)。

可变变量

定义:一个变量的变量名可以动态的设置。其实就是使用变量作为另外一个变量名。

<?php
   $a = 'test';
   $$a = '可变变量';
   echo $$a . PHP_EOL;
   //其实就是
   echo $test;

执行结果

可变变量
可变变量

完结

如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。


我是老卢,一个热爱分享、不断探索的知识旅者。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四、CSS效果

一、box-shadow box-shadow:在元素的框架上添加阴影效果 /* x 偏移量 | y 偏移量 | 阴影颜色 */ box-shadow: 60px -16px teal; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影颜色 */ box-shadow: 10px 5px 5px black; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影扩散半…

STM32 FreeRTOS 事件标志组

目录 事件标志组简介 基本概念 1、事件位&#xff08;事件标志&#xff09; 2、事件组 事件组和事件位数据类型 事件标志组和信号量的区别 事件标志组相关API函数介绍 事件标志组简介 基本概念 当在嵌入式系统中运行多个任务时&#xff0c;这些任务可能需要相互通信&am…

【网络原理】万字详解 HTTP 协议

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. HTTP 前置知识1.1 HTTP 是什么1.2 HTPP 协议应用场景1.3 HTTP 协议工作过程 2. HTTP 协议格式2.1 fiddler…

打造餐饮品牌的产品矩阵:美味与策略的完美融合-中小企实战运营和营销工作室博客

打造餐饮品牌的产品矩阵&#xff1a;美味与策略的完美融合-中小企实战运营和营销工作室博客 在竞争激烈的餐饮市场中&#xff0c;打造一个成功的餐饮品牌&#xff0c;关键在于构建一个强大且富有吸引力的产品矩阵。这不仅涉及到研发出令人垂涎欲滴的美味佳肴&#xff0c;更需要…

[Qt] Box Model | 控件样式 | 实现log_in界面

目录 1、样式属性 &#xff08;1&#xff09;盒模型&#xff08;Box Model&#xff09; 2、控件样式示例 &#xff08;1&#xff09;按钮 &#xff08;2&#xff09;复选框 &#xff08;3&#xff09;单选框 &#xff08;4&#xff09;输入框 &#xff08;5&#xff09…

【LangChain】Chapter10 - Retrieval

说在前面 上一节&#xff0c;我们介绍了语义搜索的基础知识&#xff0c;并做了一些实践案例,可以看到在有些情况下效果不错&#xff0c;但同时也能看到存在一些边缘情况。本节将介绍 检索&#xff08;Retrieval&#xff09;以及讲解一些解决这些边缘案例的高级方法。&#xff…

【物联网】ARM核介绍

文章目录 一、芯片产业链1. CPU核(1)ARM(2)MIPS(3)PowerPc(4)Intel(5)RISC-V 2. SOC芯片(1)主流厂家(2)产品解决方案 3. 产品 二、ARM核发展1. 不同架构的特点分析(1)VFP(2)Jazelle(3)Thumb(4)TrustZone(5)SIMD(6)NEON 三、ARM核(ARMv7)工作模式1. 权限级别(privilege level)2.…

【深度学习】关键技术-损失函数(Loss Function)

损失函数&#xff08;Loss Function&#xff09; 是机器学习和深度学习模型训练过程中的核心概念&#xff0c;用于度量模型的预测输出与真实标签之间的差异。通过最小化损失函数的值&#xff0c;模型可以逐步优化其参数&#xff0c;提高预测性能。 损失函数的作用 衡量模型性能…

软件测试 —— Postman(2)

软件测试 —— Postman&#xff08;2&#xff09; GETURL结构协议与主机名路径查询字符串&#xff08;Query String&#xff09; 总结 urlcode和urldecodeParams 参数Authorization基本结构常见的认证方案1. Basic 认证2. Bearer Token (OAuth 2.0)3. API 密钥4. 其他认证方案 …

靠右行驶数学建模分析(2014MCM美赛A题)

笔记 题目 要求分析&#xff1a; 比较规则的性能&#xff0c;分为light和heavy两种情况&#xff0c;性能指的是 a.流量与安全 b. 速度限制等分析左侧驾驶分析智能系统 论文 参考论文 两类规则分析 靠右行驶&#xff08;第一条&#xff09;2. 无限制&#xff08;去掉了第一条…

算法日记6.StarryCoding P52:我们都需要0(异或)

一、题目 二、题解&#xff1a; 1、对于这道题&#xff0c;题意为让我们寻找一个数x使得 b[i]a[i]^x&#xff0c; 并且b[1]^b[2]^b[3]^ b[4]^b[5]....0 2、我们把b[i]给拆开&#xff0c;可以得到 3、又因为^满足结合律&#xff0c;因此&#xff0c;可以把括号给拆开 4、接着…

快速入门:如何注册并使用GPT

文章目录 ProtonMail邮箱步骤 1&#xff1a;访问Proton官网步骤 2&#xff1a;创建ProtonMail账户步骤 3&#xff1a;选择注册免费账户步骤 4&#xff1a;填写邮箱地址和手机号&#xff08;可选&#xff09;步骤 5&#xff1a;邮箱验证&#xff08;必须进行验证&#xff09;步骤…

嵌入式硬件篇---PID控制

文章目录 前言第一部分&#xff1a;连续PID1.比例&#xff08;Proportional&#xff0c;P&#xff09;控制2.积分&#xff08;Integral&#xff0c;I&#xff09;控制3.微分&#xff08;Derivative&#xff0c;D&#xff09;控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

LDD3学习9--数据类型和定时器

这部分对应的是第七章和第十一章&#xff0c;因为内容也不是很多&#xff0c;就一起写了。里面的内容基本上就是一个个的点&#xff0c;所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样&#xff0c;看图的话最好用u8&#xff0c;u16&…

python http server运行Angular 单页面路由时重定向,解决404问题

问题 当Angular在本地ng server运行时候&#xff0c;可以顺利访问各级路由。 但是运行ng build后&#xff0c;在dist 路径下的打包好的额index.html 必须要在服务器下运行才能加载。 在服务器下我们第一次访问路由页面时是没有问题的&#xff0c;但是尝试刷新页面或手动输入路…

SparkSQL数据源与数据存储

文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145188660 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

AI agent 在 6G 网络应用,无人机群控场景

AI agent 在 6G 网络应用,无人机群控场景 随着 6G 时代的临近,融合人工智能成为关键趋势。借鉴 IT 行业 AI Agent 应用范式,提出 6G AI Agent 技术框架,包含多模型融合、定制化 Agent 和插件式环境交互理念,构建了涵盖四层结构的框架。通过各层协同实现自主环境感知等能力…

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法&#xff0c;涉及到高精度的算法&#xff0c;比如说有两个数要进行相加&#xff0c;1111111111111111111111111111111111111112222222222222222222222222222222&#xff0c;那么如果这两个数很大的话我们常用的数据类型是不能进行计算的&#xff0c;那么…