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 变量原理讲解的更多相关文章

  1. pureMVC简单示例及其原理讲解三(View层)

    本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...

  2. SQL注入原理讲解,很不错!

    SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...

  3. OAuth的机制原理讲解及开发流程

    本想前段时间就把自己通过QQ OAuth1.0.OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oaut ...

  4. pureMVC简单示例及其原理讲解五(Facade)

    本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...

  5. pureMVC简单示例及其原理讲解四(Controller层)

    本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...

  6. ElasticSearch之 控制相关度原理讲解

    控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...

  7. MongoDB优化,建立索引实例及索引机制原理讲解

    MongoDB优化,建立索引实例及索引机制原理讲解 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样 ...

  8. 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解

    ========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...

  9. 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

随机推荐

  1. angular中要注意的指令

    1.ng-repeat 遍历集合,给每个元素生成模板实例,每个实例的作用域中可以用一些特殊属性,如下: $index //遍历集合的下标 $first //遍历集合中的第一个对象 $last //遍历 ...

  2. PAT basic level 1001-1019 解题笔记

    1002 写出这个数 采用字符串输入数据,再对每位减去字符‘0’,得到该位相应的整数 int len=s.length();//字符串的长度 ; ;i<len;i++)//每位减去‘0’,逐位相 ...

  3. WPF之ViewModel

    写之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等.可能是winfrom先 ...

  4. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...

  5. dom4j读取xml

    -----记录和回顾是一个比学习更重要的环节----- 一.首先,我们需要知道xml是做什么的 1.作为软件的配置文件 2.作为数据的载体(小型的数据库) 二.xml的语法 xml文件以xml后缀名结 ...

  6. 高通HAL层之Sensor HAL

    高通的HAL层其实分为两种,一种是直接从kernel这边报数据上来的,由sensor HAL层来监听,另一种是走ADSP的模式,HAL层是通过qmi的形式进行监听的: 走ADSP架构的可以看下面的博客 ...

  7. iOS-沙盒目录

    ///沙盒路径 + (NSString *)pathDocument{ NSFileManager *fileManager = [[NSFileManager alloc]init]; NSStri ...

  8. POJ [P3660] Cow Contest

    传递闭包经典应用 奶牛的名次能确定当且仅当在它前面的牛数+在他后面的牛数==n-1 在他前面和后面的牛数可以转化成求完传递闭包后的出度和入度 #include <iostream> #in ...

  9. BZOJ 3684: 大朋友和多叉树 [拉格朗日反演 多项式k次幂 生成函数]

    3684: 大朋友和多叉树 题意: 求有n个叶子结点,非叶节点的孩子数量\(\in S, a \notin S\)的有根树个数,无标号,孩子有序. 鏼鏼鏼! 树的OGF:\(T(x) = \sum_{ ...

  10. 在.NetCore中使用Myrmec检测文件真实格式

    Myrmec 是什么? Myrmec 是一个用于检测文件格式的库,Myrmec不同于其它库或者手写检测代码,Myrmec不依赖文件扩展名(在实际使用中,你的用户很可能使用虚假的扩展名欺骗你的应用程序) ...