PHP 变量

news2024/11/20 12:36:30

变量是用于存储信息的"容器":

实例

<?php $x=5; $y=6; $z=$x+$y; echo $z; ?>


运行实例 »


与代数类似

x=5
y=6
z=x+y

在代数中,我们使用字母(如 x),并给它赋值(如 5)。

从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。

在 PHP 中,这些字母被称为变量

变量是用于存储数据的容器。


PHP 变量

与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。

变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

PHP 语句和 PHP 变量都是区分大小写的。

创建(声明)PHP 变量

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

实例

<?php $txt="Hello world!"; $x=5; $y=10.5; ?>


运行实例 »

在上面的语句执行中,变量 txt 将保存值 Hello world!,且变量 x 将保存值 5

注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。


PHP 是一门弱类型语言

在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。

PHP 会根据变量的值,自动把变量转换为正确的数据类型。

在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。


PHP 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

PHP 有四种不同的变量作用域:

  • local
  • global
  • static
  • parameter

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

实例

<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "<br>";
    echo "变量 y 为: $y";


myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>


运行实例 »

在以上实例中 myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。

当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。

你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。

PHP global 关键字

global 关键字用于函数内访问全局变量。

在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

实例

<?php $x=5; $y=10; function myTest() { global $x,$y; $y=$x+$y; } myTest(); echo $y; // 输出 15 ?>


运行实例 »

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面的实例可以写成这样:

实例

<?php $x=5; $y=10; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; } myTest(); echo $y; ?>


运行实例 »


Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用 static 关键字:

实例

<?php function myTest() { static $x=0; echo $x; $x++; echo PHP_EOL; // 换行符 } myTest(); myTest(); myTest(); ?>


运行实例 »

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释:该变量仍然是函数的局部变量。


参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:

实例

<?php function myTest($x) { echo $x; } myTest(5); ?>

我们将在 PHP 函数 章节对它做更详细的讨论。

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

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

相关文章

echarts的grid——图表的位置配置

首先还是先认识grid&#xff0c;要弄清楚grid是哪一块区域&#xff0c;这就牵扯到对echarts图表元素的基本认识。为此&#xff0c;我做了一个总结&#xff0c;如图所示&#xff1a; 数学里的笛卡尔坐标系分为直角坐标系 和斜坐标系。而grid只适用于直角坐标系&#xff01; 我们…

分布式理论之分布式互斥

写在前面 本文一起看下分布式理论中的分布式互斥&#xff08;distributed mutual[ˈmjutʃuəl] exclusion&#xff09;问题&#xff0c;以及解决该问题相关算法。 1&#xff1a;什么是分布式互斥 我们先看下什么是临界资源&#xff08;critical resource&#xff09;&#…

如何提高苹果商店ASA广告的展示份额

众所周知&#xff0c;APP获得曝光后&#xff0c;才会有用户的点击率和下载&#xff0c;接下来柚鸥ASO会告诉大家&#xff0c;如何在保障ROI&#xff08;是指投入成本跟获得的收益的比值&#xff09;的情况下&#xff0c;为ASA获得最大的展示份额。 CPM是指通过商家付费&#x…

【nowcoder】笔试强训Day2

目录 一、选择题 二、编程题 2.1排序子序列 2.2倒置字符串 一、选择题 1.A 派生出子类 B &#xff0c; B 派生出子类 C &#xff0c;并且在 java 源代码有如下声明&#xff1a; 1. A a0new A(); 2. A a1new B(); 3. A a2new C(); 问以下哪个说法是正确的&#xff08;&…

19. 【gRPC系列学习】拦截器Interceptor

无论客户端还是服务端在远程调用前后执行一些通用逻辑,例如Gin框架,实现日志、监控、认证、Recover等通用逻辑,gRPC也提供这样的机制。 拦截器分为:一元拦截器、流拦截器,这两种拦截器在客户端、服务端都可以使用。拦截器的执行流程如图:其中InHandlerx与outHandlerx是同…

1 月 25 日见|Flutter Forward 活动日程表正式发布!

2023 年 1 月 25 日 (正月初四)&#xff0c;我们将在肯尼亚首都内罗毕举办 Flutter Forward 大会&#xff0c;并同时开启线上直播。本次活动将为展示最新的 Flutter 技术更新&#xff0c;包括一个主题演讲以及多个技术演讲和线上问答&#xff0c;全方位展示 Flutter 如何推动 U…

B+树 [数据结构与算法][Java]

B树 B树是B树的一种变形 我们通过一颗四阶B树来理解认识一下B树:(如下:) 我们其实从图上就可以看出B树和B树是有很多不同之处的 比如我们的B树中将叶子结点层的所有结点使用一个链表串联了起来B树中对于非叶子结点都是只是存储的索引(指针), 并没有存储关键字, 所以我们最终查…

离散数学数理逻辑部分

前言 本文创作的起因是&#xff0c;经历了离散数学的学习&#xff0c;深感学习离散之艰辛。所以产生了写一些内容帮助大家期末复习。虽然在csdn发表本文&#xff0c;有些不太合适&#xff0c;但是还是相信本文的质量和内容&#xff0c;可以给正在学习离散数学的大学生提供一些…

vscode使用shift+alt+f格式化html文件时不生效

关于vscode配置相关文章&#xff08;方便作者之后复习&#xff09;: VScode如何在敲代码时自动导入包怎么在VScode中写代码模板【以创建express模板为例】如何根据项目的eslint去配置vscode的setting 1-1 下载Beautify插件 该插件已停止维护&#xff0c;输入下载其他插件 1-2 在…

【Linux】进程概念(上)

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;冯诺依曼体…

1754. 构造字典序最大的合并字符串

摘要 1754. 构造字典序最大的合并字符串 一 贪心算法分析 题目要求合并两个字符串 word1 与 word2&#xff0c;且要求合并后的字符串字典序最大。首先需要观察一下合并的选择规律&#xff0c;假设当前需要从 word1​ 的第 i 个字符和 word2​ 的第 j个字符选择一个字符加入到…

24. 【gRPC系列学习】gRPC安全认证-TLS认证

TLS认证是gRPC比较常见的方式,利用PKI体系,生成客户端证书、服务端证书、以及CA证书,在交互期间进行身份验证,经秘钥协商后,以对称秘钥进行加密通信,保证数据隐私。Basic、Jwt都是要自实现,TLS是官方支持,操作简单。 1. TLS原理 双向认证简单来讲:服务端验证客户端证书…

前端小知识:返回浏览器上一页(back、go、referrer)

官方文档&#xff08;document.referrer&#xff09;&#xff1a; https://developer.mozilla.org/zh-CN/docs/Web/API/Document/referrer   官方文档&#xff08;history.back&#xff09; https://developer.mozilla.org/zh-CN/docs/Web/API/History/back   官方文档&#…

DaVinci:曲线之 HSL 曲线

调色页面&#xff1a;曲线Color&#xff1a;CurvesH 指的是色相 Hue&#xff0c;S 指的是饱和度 Saturation&#xff0c;L 指的是亮度 Luminance。DaVinci Resolve 的曲线调板中&#xff0c;除了自定义曲线&#xff0c;还提供了六种基于色相、饱和度或亮度的调节曲线&#xff0…

Akka 进阶(二)Mailbox 邮箱

目录一 默认邮箱配置二 内置邮箱三 自定义邮箱四 配置邮箱五 RequiresMessageQueue接口Actor中的邮箱是一个队列结构&#xff0c;所有发送过来的消息都会在该队列进行排队&#xff0c;在默认情况下&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的模式&#xff0c;假…

如何将ppt图片压缩?统一压缩ppt图片的简单方法

日常生活中经常需要用到ppt&#xff0c;一份PPT少则十几页多则上百页&#xff0c;就很容易造成PPT过大不易传送的情况&#xff0c;其实我们可以先把ppt图片压缩&#xff08;图片压缩到指定大小 图片压缩大小至指定kb以下-压缩图&#xff09;之后再制作成ppt文件&#xff0c;那么…

【推荐收藏】这份图解算法数据结构的材料太良心

5年前发生的一件事&#xff0c;成为了我职业生涯的重要转折点。当时的我在交大读研&#xff0c;对互联网求职一无所知&#xff0c;但仍然硬着头皮申请了 Microsoft 实习生。面试官让我在白板上写出“快速排序”代码&#xff0c;我畏畏缩缩地写了一个“冒泡排序”&#xff0c;并…

Unity 3D Inspector 视图 || Unity 3D Scene View 视图 || Unity 3D Game View 视图

Unity 3D Inspector 视图 Unity 3D 的 Inspector 视图用于显示当前选定的游戏对象的所有附加组件&#xff08;脚本属于组件&#xff09;及其属性的相关详细信息。 视图布局 以摄像机为例&#xff0c;在 Unity 3D 的 Inspector 视图中显示了当前游戏场景中的 MainCamera 对象所…

腾讯云轻量应用服务器使用 Cloudreve 应用镜像搭建个人私有云盘!

Cloudreve 是一款开源的网盘软件&#xff0c;支持服务器本机及腾讯云对象存储 COS 等多种存储方式&#xff0c;提供离线下载、拖拽上传、在线预览等功能&#xff0c;能够帮助您快速搭建个人使用或多人共享的云盘系统。该镜像基于 CentOS 8.2 64位操作系统&#xff0c;已集成宝塔…

OpenAI | GPT-3新模型Davinci,将AI写作提升到新水平!网友惊呼:GPT-4要来了?

文 | 王思若20年&#xff0c;OpenAI推出了1750亿参数量的屠榜‘杀器’GPT-3&#xff0c;但基于大模型至今悬而未决的伦理和社会风险以及商业盈利等因素的考量&#xff0c;OpenAI将GPT-3以付费API的形式向公众开放。通过调用GPT-3的API&#xff0c;问答、语义检索、翻译、数学推…