PHP变量用于存储字符、数字、数组甚至对象内容等,以便在我们需要的地方使用。 定义一个变量的语法: $变量名 = 值; 使用变量的例子: 代码如下 复制代码 <?php $var_char = "你好~"; echo $var_char; ?> 执行这段代码输出的结果是: 1 你好~ 从这个例子可以看出,变量名以 $ 开始,标明这是一个变量。变量名以字母(a-z、A-Z)或者下划线 _ 开始,后面可以跟任意字母或数字以及下划线,但不能是空格。 如下这些变量名是有效的: $var_char $varChar $_varChar $var_char5 提示 关于变量命名,我们建议变量名以标明其实际语意的组合为佳,如 $my_name 或 $myName 格式。 全局变量global 全局变量便是其中之一,当然这个观点颇具争议,有许多人还是建议禁用全局变量,使用不当对造成程序的可读性很差!结构混乱,调试更是一头雾水,但是不可否认他的便捷,这便是php为什么会用全局变量global原因吧!„ 今天就遇到了php 全局变量不起作用的问题. 先上一段简单的代码: 代码如下 复制代码 <?php $a = 0 ; function Test() { $a =1; } Test(); echo $a; ?> 上面的代码中输出是0,那是因为函数体Test内$a变量被缺省设置为局部变量,$a的作用域就是在Test内.修改代码如下 代码如下 复制代码 <?php $a = 0 ; function Test() { global $a;//申明函数体Test内使用的$a变量为global全局变量 $a =1; } Test(); echo $a; ?> 申明函数体Test内使用的$a变量为global全局变量后,使得$a的作用全局,所以输出为1. 上面的实例只是基本的global全局变量知识,下面我们看看复杂点的: 代码如下 复制代码 //A.php 文件 <?php function Test_Global() { include 'B.php'; Test(); } $a = 0 ; Test_Global(); echo $a; ?> //B.php 文件 <?php function Test() { global $a;//申明函数体Sum内使用的$a变量为global全局变量 $a =1; } ?> 为什么输出的却是0? 在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(包括include 和 require 导入的文件内的变量)! 解释:A.php文件的内Test_Global是定义好的第三方函数,该函数用include导入了B.php文件内的$a的global全局变量,所以$a被限制在Test_Global局部函数范围内,所以B.php文件内的$a的作用范围都在Test_Global内,而不是作用了整个A.php内. 解决方案: 1. 冲出局部函数//A.php 文件 代码如下 复制代码 <?php function Test_Global() { Test(); } include 'B.php'; //将include 从局部Test_Global函数中移出 $a = 0 ; Test_Global(); echo $a; ?> //B.php 文件 <?php function Test() { global $a; $a =1; } ?> 2.优秀的访问器 代码如下 复制代码 //A.php 文件 <?php include 'B.php'; $a =0; Set_Global($a); echo $a; ?> //B.php 文件 <?php function Set_Global(&$var) { $var=1; } ?> php变量 引用函数 static变量无论怎样声明变量(按值或按引用),总之在PHP脚本的任何位置都可以声明变量。但是,声明的位置会大大影响访问变量的范围。这个可访问的范围称为作用域(scope)” –PHP与MySQL程序设计在了解php变量之前,我们先看看段式内存管理架构的内存段的划分。通常操作系统会将物理内存划分为以下几个逻辑段。 Text-Segment,这个段最大的特点就是只读。一般存放可执行代码,也有可能常量也存放在这里,比如字符串常量 BSS-Segment,这里存放了那些没有初始化的变量。某种意义来讲,没有初始化的变量都是垃圾,不可用 Data-Segment,这里存放了全局变量和静态变量,直到脚本运行结束,操作系统才会回收这里的内存空间,变量亦会被销毁。 Stack-Heap Segment 函数参数与本地变量(也称局部变量)存放在堆中(stack),还有返回值等等。用完了,操作系统就会回收这部分内存空间。对于C程序员而言,可以自行从栈中(heap)申请内存空间,用完了,也需要自己手动释放。 作为PHP程序言而言,我们关心的是全局变量、静态变量、局部变量、函数参数以及函数返回值。局部变量和函数参数基本上一样,在初始化的时候分配内存空间,退出函数后操作系统会回收内存空间。而全局变量与静态变量要直php脚本运行结束后,内存空间才会被释放。与全局变量不同的时,所有静态变量在程序执行之前就初始化并且分配了内存空间。 注: 1.函数外部声明静态变量意义不大,函数内部声明静态变量受限于作用域,函数外部不能修改函数内部静态变量。 2.引用变量,也是变量,只不过它的值是变量的内存地址。
信息发布:广州名易软件有限公司 http://www.myidp.net
|