php 变量原理讲解
php 变量原理讲解
一、变量概念
所谓变量,是指在程序中其值可以变化的量。
程序是管理和处理数据的。在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的。
变量通常由两部分组成,变量名 和 变量值

1.1 在php中,定义一个变量,使用$符号,在定义的时候不用理会这个变量是什么数据类型。

1.2 变量赋值,修改,销毁
增,就是赋值,比如$a = “PHP”
改, 重新赋值即可,$a = “Mysql”
查, 通过引用的方式 如 $a
删, 使用unset 如 unset($a)
1.3 Unset 到底干了什么?
去掉了变量引用,然后销毁变量。
二、变量名的规范定义
1. 变量名通常是由字母、数字和下划线组成,不以数字开头。
2. 见名知意
3. 对于一个有多个单词组成的变量名,单词之间如何分割,firstName,first_name。(入乡随俗)
☞ 注意细节
$不是变量名的一部分,这是php变量语法,意思是后边的标识符是一个变量(特殊的this变量)
当使用一个没有定义的变量时,会报一个notice错误,可以使用isset来检查
变量名是大小写敏感的,建议使用下划线方式


三、变量之间的赋值
在php中,变量赋值默认是采用值传递的方式,这也是php最基本的赋值方式。

还有一种传值的方式,就是引用传递。


☞ 注意细节
unset一个变量时,删除该变量,以及标识符到变量之间的引用
存在变量名字,已经在内存里存在的变量才满足引用赋值的条件。($bar = &(24 * 7); // 非法;)
四、可变变量
变量名(变量标识符),它还可以是一个变量,这就是可变变量。

简单的例子

五、预定义变量
php中存在很多不需要用户脚本来定义就可以直接使用的变量,称之为预定义变量。
$_POST
$_GET
$_REQUEST
$_SERVER
$_FIELS
$_SESSION
$_COOKIE
$_ENV
$GLOBALS
关于get和post,如果在get和post同时存在一个变量,应该取哪一个值。(在php.ini配置中约定好的)

起作用是后面POST。
$_REQUST = $_POST + $_GET
如果能够明确是post还是get提交,就直接使用post或者get,当不明确的时候,那就可以使用$_REQUEST。
$_SERVER,和HTTP协议以及服务器相关的一些信息。
☞ 注意细节
使用request时,如果post和get都有一个相同变量名称时,则只保留post,取决于php的配置 request_order = 'GP';
$GLOBALS 引用全局作用域中可用的全部变量
六、变量的作用域
什么是作用域?
指的是变量的生效范围。
全局变量(也就是生效范围,在当前脚本,在脚本运行结束的时候失效。)
局部变量
超级全局
文章转至:http://www.codexueyuan.com/learn/learn-detail30-phpbljj
php 变量原理讲解的更多相关文章
- pureMVC简单示例及其原理讲解三(View层)
本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...
- SQL注入原理讲解,很不错!
SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...
- OAuth的机制原理讲解及开发流程
本想前段时间就把自己通过QQ OAuth1.0.OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oaut ...
- pureMVC简单示例及其原理讲解五(Facade)
本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...
- pureMVC简单示例及其原理讲解四(Controller层)
本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...
- ElasticSearch之 控制相关度原理讲解
控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...
- MongoDB优化,建立索引实例及索引机制原理讲解
MongoDB优化,建立索引实例及索引机制原理讲解 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样 ...
- 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解
========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...
- 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
随机推荐
- shell第四篇(下)
摘自王垠的:Unix的缺陷 我想通过这篇文章解释一下我对 Unix 哲学本质的理解.我虽然指出 Unix 的一个设计问题,但目的并不是打击人们对 Unix 的兴趣.虽然 Unix 在基础概念上有一个挺 ...
- TCP全连接队列和半连接队列已满之后的连接建立过程抓包分析[转]
最近项目需要做单机100万长连接与高并发的服务器,我们开发完服务器以后,通过自己搭的高速压测框架压测服务端的时候,发生了奇怪的现象,就是服务端莫名其妙的少接收了连接,造成了数据包的丢失,通过网上查资料 ...
- R 调用 python
上一篇说了python使用 rpy2 调用 R,这里介绍R如何调用python.R的强项在于统计方面,尤其是专业的统计分析,统计检验以及作图功能十分强大,但是在通用性方面,就远不如Python了,比如 ...
- 深度优化LNMP之MySQL
MySQL数据库优化框架体系 1.硬件层面优化 2.操作系统层面优化 3.MySQL数据库层面优化 4.MySQL安全优化 5.网站集群架构上的优化 6.MySQL流程.制度控制优化 1 硬件层面优化 ...
- AppScan 扫描测试策略
使用 AppScan 进行扫描 针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Ana ...
- 精通libGDX-RPG开发实战
从今天开始,我会陆陆续续做一个五脏俱全的rpg小品游戏. 素材使用<圣剑英雄传II>的素材 游戏名称< Inspiration > 教程目录(暂定): Chapter 1: 开 ...
- linux下的打包与压缩
linux压缩或解压缩工具有很多,除了已经很少有人使用的compress外,现在常用的还有tar,bzip2,xz 和gziplinux压缩或解压缩工具有很多,除了已经很少有人使用的compress外 ...
- 序列化与transient
满足下面四个条件中的一个的类就不应该被序列化: 1.一个类与本地代码(native code)有紧密的关系,如java.util.zip.Deflater,这个类中很多都是native的. 2.对象 ...
- BZOJ 1488: [HNOI2009]图的同构 [Polya]
完全图中选出不同构的简单图有多少个 上题简化版,只有两种颜色....直接copy就行了 太诡异了,刚才电脑上多了一个不动的鼠标指针,然后打开显卡管理界面就没了 #include<iostream ...
- POJ 3683 Priest John's Busiest Day[2-SAT 构造解]
题意: $n$对$couple$举行仪式,有两个时间段可以选择,问是否可以不冲突举行完,并求方案 两个时间段选择对应一真一假,对于有时间段冲突冲突的两人按照$2-SAT$的规则连边(把不冲突的时间段连 ...