php变量教学,PHP变量详解

什么是变量

变量指的就是在程序执行过程中数值可以变化的量,它与我们所讲的常量是相反的,我们常量是只要被定义了,在程序中就不能被改变。而变量是可以变的。

变量作用

变量就是用来保存我们值,相当于一个存储数据的容器。

x = 5;

y = 6;

z = x + y;

从上面的表达式 z = x + y;我们能够计算出 z 的值是 11

在 PHP 中,这三个字母就被称为变量。

变量赋值

变量赋值,是指给一个变量具体的数据值,对于字符串和数字类型的变量,可以通过“=”来实现赋值,像上面一样例子一样,x和y是变量,那么5和6就是变量的值了。

声明变量

通过美元符号 $变量名称 来表示变量

$x = 5;

$y = 6;

$z = $x + $y

上面的实例就完成了我们对变量的定义与赋值了。

PHP 变量规则

变量以 $ 符号开始,后面跟着变量的名称

变量名必须以字母或者下划线字符开始

变量名只能包含字母数字字符以及下划线

变量名不能包含空格

$A驼峰标记法(firstName)或者下划线法命名(first_name)

变量名称严格区分大小写,$y和$Y是两个变量,如果变量名称重复,后面的值会覆盖前面的值

变量可以不声明,直接使用

除了上面的变量直接赋值外,还有两种方式可以声明变量和赋值,一种是变量间的赋值,什么意思呢?看下面的实例

$str1 = 'hello';

$str2 = $str1;

$str1 = 'world';

echo $str2;

输出 “hello”

我们并没有给变量$str2直接赋值,而是将变量$str1赋值给$str2,这就是我们变量间的赋值。

另一种是引用赋值。从PHP4开始,PHP引入了“引用赋值”的概念,就是用不同的名字访问同一个变量内容。当改变其中任何一个变量的值,另一个也会发生变化。引用赋值使用“&”来表示引用。

引用和赋值的区别在于,赋值是将原变量内容复制下来,再用一个新的内存空间来保存,而引用则是给变量的内容在起一个名字,相当于一个别名。就好像一些文学爱好者经常会向报纸,杂志投稿件,但一般都不会真名,而是用笔名,这个笔名就可以看作是一个引用。

//php引用变量:不同变量名指向同一地址

//定义一个变量a,此时内存开辟了一块区域,$a指向该区域

$a = 100;

var_dump($a); //int 100

//定义变量b,将a变量的值赋值给b,此时该区域有两个变量($a和$b)指向。

$b = $a;

var_dump($b); //int 100

//修改$a变量的值,php变量具有Copy On Write的特性,所以会复制并重写a所指向的区域值,此时a和b分别指向不同区域。

$a = 10;

var_dump($a); //int 10

var_dump($b); //int 100

$c = 100;

$d = &$c;

$c = 10;

var_dump($c); //int 10

var_dump($d); //int 10

//当引用指向时,php变量不在具有Copy On Write特性,且指向同一内存区域,无论$c或$d谁变化,另外一个都会变化

可变变量(使用两个美元符号($))

$a = "hello";

$$a = "world";

两个变量都被定义了:$a 的内容是“hello”,并且 $hello 的内容是“world”。因此,可以表述为:

echo “$a ${$a}”;或者 echo “$a $hello”;它们都会输出:hello world

变量作用域

变量在使用时要符合变量的定义规则。变量必须在有效的范围使用,如果变量超出了有限范围,变量也就没有意义了,就好像我们有一沓人民币,我们可以在中国购买商品,但如果来到国外,那么这一沓人民币也就不能用了。这一沓人民币就相当于这个变量,而中国以内的范围就相当于作用域。

PHP的变量由于作用域不同分为:局部变量,全局变量和静态变量,如下表:

局部变量

在函数的内部定义的变量,作用域就是所在的函数范围

全局变量

在被定义所有的函数以外的变量,作用域是整个PHP文件,但是在用户自定义函数内部是不能使用的。如果希望用户在用户自定义函数内部使用全局变量,则使用global关键字声明全局变量

静态变量

能够在函数调用结束后仍保留变量值,当再次回到其作用域,又可以继续使用原来的值。而一般变量是在函数调用后,其存储的数据值会被清除,所占用的内存空间也会被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前

TIPS

在函数内部定义的变量,其作用域为所在的函数,如果在函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会被清除。

本实例用于比较在函数内赋值的变量(局部变量)和在函数外赋值的变量(全局变量),实例代码如下:

$exam= "在函数外定义"; //声明全局变量

function add(){

$exam="在函数内定义"; //声明局部变量

echo "在函数内输出的内容是:".$exam."
"; //输出局部变量

}

add(); //调用函数

echo "在函数外输出的内容是:".$exam; //输出全局变量

?>

运行结果:

在函数内输出的内容是:在函数内定义

在函数外输出的内容是:在函数外定义

静态变量在很多地方都能用到,静态变量类型说明符是static。

static全局变量只初始化一次,防止在其他文件单元中被引用

static局部变量只被初始化一次,下一次依据上一次结果值

static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

下面的实例使用静态变量和普通变量同事输出一个数据,查看一下两者的功能有什么不同,代码如下:

function zdy0(){

static $message = 0; //初始化静态变量

$message+=1;

echo $message." ";

}

function zdy1(){

$message = 0; //初始化静态变量

$message+=1;

echo $message." ";

}

for ($i=0;$i<10;$i++){

zdy0(); //输出1~10

}

echo "
";

for ($i=0;$i<10;$i++){

zdy1(); //输出10个1

}

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

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

相关文章

2008 年 十大预测的总结 (只对了一半左右)

2008年头一天&#xff0c;收集了众多专家对2008年的预测&#xff0c;现在该是总结一下的时候了&#xff0c;以下 {} 内的字为总结。 大概算了算, 十大预测只对了一半左右 – 可以称为半仙。 专注于部分软件技术的部分专家对2008 年的部分预测的top 10 上次博客堂年会的时候&…

java如何实现开机启动,怎样实现开机启动holer

Holer客户端软件设置开机启动Holer client 1.2版本支持设置开机自启动。Holer Java语言版本解压软件包&#xff0c;进入目录&#xff1a;cd holer-client/binWindows系统&#xff1a;双击 setup.vbs注意事项&#xff1a;请确保当前用户对如下目录具有读取、写入、执行、修改等权…

同学们对《现代软件工程》课程的意见

在这里&#xff1a; http://greatsoftware.spaces.live.com/blog/cns!42F139862BB64716!332.entry 在考试的时候&#xff0c;我提到 – 如果答题答不出来&#xff0c;提一些意见&#xff0c;也可以加分&#xff0c;所以意见还算挺踊跃。 又到了拉出来遛遛的时候了, 今年的5个…

java new expression,JAVA公式解析示例

// 数值型Expression exp new Expression("(x y)/2");Map variables new HashMap();variables.put("x", new BigDecimal("4.32"));variables.put("y", new BigDecimal("342.1"));BigDecimal result exp.eval(variables)…

春晚之后的采访和豆瓣投名状

一年一度的春晚又开始了&#xff0c;从一个外行的角度来看&#xff0c;可以归纳为&#xff1a;艺术表现主要靠吼&#xff0c;相声包袱主要靠损&#xff0c;小品幽默主要靠扯。 如果你爱一个人&#xff0c;请把他送到春晚&#xff1b;如果你恨一个人&#xff0c;请把他送到春晚&…

java常用23,JAVA基础(23)---数组的常用操作

数组的一些常用操作数组元素的遍历① 正序 ② 逆序public class ArryDemo{public static void main(String[] args){int[] arry {2,5,3,7,6}//正序遍历数组for(int i 0 ; i < arry.length ; i){System.out.println(arr[i]);}//逆序遍历for(int i arry.length-1 ; i >…

《我和他的结婚录像和相册集》的快速传播

当你看到你的一个朋友的 Live Space 有了这个更新&#xff0c;你当然想看. 但是你是点击文字 “我和他的结婚录像和相册集”&#xff0c; 还是旁边的 "心形图标"? 很多人&#xff0c;包括我&#xff0c;都点击了"心形图标", 不幸的是&#xff0c;这样…

matlab函数输出,优化求解器输出函数

嵌套输出函数的示例创建和使用输出函数中的示例不需要输出函数在每次迭代后保留数据。如果不需要保存各次迭代之间的数据&#xff0c;可以将输出函数编写为函数文件&#xff0c;并从命令行直接调用优化函数。但是&#xff0c;要使输出函数在每次迭代后记录数据&#xff0c;请编…

一篇热帖的解剖

上回提到《结婚相册》的快速流传&#xff0c; 其实&#xff0c;不但是结婚相册&#xff0c; 有时候网络上出现一篇似是而非&#xff0c;似非而是的热帖&#xff0c;大家就纷纷转贴&#xff0c; 大家的朋友看了之后也热气上冲&#xff0c;继续转贴。。。 这篇博客 (http://blo…

php分区表,【MYSQL】分区表

对于MYSQL的态度一直都是会基本SQL和简单命令就行&#xff0c;最近处理一个数据量很大的项目&#xff0c;为了提高效率&#xff0c;在数据库方面的瓶颈上&#xff0c;选择了使用分区表来提高查询效率。至此和大家一起分享一下。 1.引言 本文初略的讲述了mysql数据库如何分区表。…

顶级程序员的心得 Coders at Work (I)

正在读 “Coders at Work”, 对15 位顶级程序员的采访&#xff0c; 总共600页。 从采访的模式看&#xff0c;有点像“艺术人生”&#xff0c; 一般都是音乐起&#xff0c;讲小时候的故事&#xff0c;你怎么开始写程序的? (Brad 同学 5 岁开始写) &#xff1b; 不过后来并没…

顶级程序员的心得 Coders at Work (II)

正在读 “Coders at Work”, 对15 位顶级程序员的采访&#xff0c; 总共600页。 这些看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选&#xff0c;面试程序员&#xff0c;优秀程序员的特点&#xff0c;和程序设计的句子。下面是 3 个程序员的心得&#xff0c;和我的…

matlab车辆测距,一种基于单目视觉的车辆测距方法

一种基于单目视觉的车辆测距方法【专利说明】一种基于单目视觉的车辆测距方法 所属技术领域[0001] 本发明属于目标检测与测距领域&#xff0c;尤其涉及一种基于单目视觉的车辆测距方法.【背景技术】[0002] 随着公路交通特别是高速公路系统的发展&#xff0c;交通事故率也呈现上…

顶级程序员的心得 Coders at Work (III)

这是第三部分&#xff08;第一&#xff0c;第二部分&#xff09;&#xff0c;非常有意思的问答&#xff0c;值得仔细琢磨。 这里只是一些和程序员发展&#xff0c;面试&#xff0c;优秀程序员的特点等相关的部分。 有些想法和 MSF 中的原则也很相似 &#xff08;见 <移山之…

html留言板 php,linux下使用Apache+php实现留言板功能的网站

一.首先我们的linux服务器上要安装Apache和phpphp的安装方法和Apache方法如同一辙二.关闭防火墙服务&#xff0c;关闭selinux请参考&#xff1a;http://www.cnblogs.com/dagege/p/5947251.html三.我们通过FTP服务或使用rz命令将文件放到Apache的根目录下 /var/www/html示例文件…

顶级程序员的心得 Coders at Work (IV)

( 第一&#xff0c;第二&#xff0c; 第三部分 ) “Coders at Work”, 对15 位顶级程序员的采访&#xff0c; 总共600页。 看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选&#xff0c;面试程序员&#xff0c;优秀程序员的特点&#xff0c;和程序设计的句子。下面…

多个php 链接数据库,ThinkPHP实现多数据库连接的解决方法

1.ThinkPHP实现连接多个数据的时候&#xff0c;如果数据库在同一个服务器里的话只需要这样定义模型&#xff1a;Model:namespace Shebao\Model;use Common\Model\CommonModel;class CeshiModel extends CommonModel{protected $trueTableName shebao.sb_person; //数据库名.表…

编程之美 - 哪个题目最美?

编辑部搞的活动&#xff0c; 请大家帮个忙&#xff0c;来投票吧&#xff0c;看看《编程之美》第1章“游戏之乐——游戏中碰到的题目”大家最喜欢哪个题目&#xff0c;或者大家认为哪个题目最有趣。         可以选择以下任何网址参与投票&#xff1a;   CSDN&#xff1…

php实现把es6转为es5,使用webpack将ES6转化ES5的实现方法

babel使用打开babel官网&#xff0c;按教程安装babel安装npm install --save-dev babel-loader babel/core babel/preset-env配置rulesmodule: {rules: [{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }]}生成 .babelrc文件{"presets"…

BUAA - 各项目组对软件用户数的估计

项目组: 底限 - 高限 CodeHolic: 200 – 1000 Code Canvas: 30 – 200 Stone: 50 – 200 Bugzapper: 100 - 1,000 CodeAngel: 200 – 800 Dream: 500 – 800 Xirtam: 1 – 100 Terminator: 100 – 300