PHP基础
PHP基础 第三章 变量
## 1、基础 变量规则 - 变量以 $ 符号开头,其后是变量的名称 - 变量名称必须以字母或下划线开头 - 变量名称不能以数字开头 - 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _) - 变量名称对大小写敏感($y 与 $Y 是两个不同的变量) - 按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。 ## 2、预定义变量 尽管超全局变量和 HTTP_*_VARS 同时存在。但是他们并不是同一个变量,所以改变一个的值并不会对另一个产生影响。 PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化,他影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT ## 3、变量范围 ### 3.1 一般情况 大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。 ### 3.2 global关键字 在函数中用global申明了全局变量,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限制。 ### 3.3 使用 $GLOBALS 替代 global 在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。 ```php $a = 1; $b = 2; function Sum(){ $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b;//3 ``` ### 3.4 使用静态变量 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。 ```php function Test(){ static $a = 0; //声明静态变量时不能使用表达式,如static $a=1+2是错误的 echo $a; $a++; } ``` 每次调用 Test() 函数都会输出 $a 的值并加一 ## 4、可变变量 ```php $a = 'hello'; $$a = 'world'; echo "$a ${$a}";//hello world。 echo "$a $hello";//hello world。 ``` 要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。 超级全局变量不能被用作可变变量。 ## 5、PHP的外部变量 ### 5.1 HTML 表单(GET 和 POST) magic_quotes_gpc 配置指令影响到 Get,Post 和 Cookie 的值。如果打开,值 (It's "PHP!") 会自动转换成 (It\'s \"PHP!\")。数据库的插入就需要转义。 ### 5.2 IMAGE SUBMIT 变量名 当提交表单时,可以用一幅图像代替标准的提交按钮,用类似这样的标记: ```php <input type="image" src="image.gif" name="sub" /> ``` 当用户点击到图像中的某处时,相应的表单会被传送到服务器,并加上两个变量 sub_x 和 sub_y。它们包含了用户点击图像的坐标。有经验的用户可能会注意到被浏览器发送的实际变量名包含的是一个点而不是下划线(即 sub.x 和 sub.y),但 PHP 自动将点转换成了下划线。 ### 5.3 HTTP Cookies 在浏览器中一个 cookie 会替换掉上一个同名的 cookie,除非路径或者域不同。因此对于购物车程序可以保留一个计数器并一起传递,例如: ```php if (isset($_COOKIE['count'])) { $count = $_COOKIE['count'] + 1; } else { $count = 1; } setcookie('count', $count, time()+3600); setcookie("Cart[$count]", $item, time()+3600); ``` ### 5.4 确定变量类型 PHP 包括几个函数可以判断变量的类型,例如:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()。
顶部
收展
底部
[TOC]
目录
PHP基础 第一章 基本语法
PHP基础 第二章 类型
PHP基础 第三章 变量
PHP基础 第四章 常量
PHP基础 第五章 运算符
PHP基础 第六章 流程控制
PHP基础 第七章 函数
PHP基础 第八章 命名空间
PHP基础 第九章 异常与错误
PHP基础 第十章 类与对象
PHP基础 第十一章 生成器
PHP基础 第十二章 引用
PHP基础 第十三章 预定义变量
PHP基础 第十四章 上下文(Context)选项和参数
PHP基础 第十五章 支持的协议和封装协议
PHP基础 第十六章 安全
PHP基础 第十七 章 特点
PHP基础 第十八章 PHP 核心:骇客指南
PHP基础 第十九章 核心配置选项列表
相关推荐
PHP函数
PHP设计模式
PHP算法
PHP版本