PHP的变量总结 新手推荐


Posted in PHP onApril 18, 2011

PHP中不需要显示声明变量,变量声明可以与赋值同时进行。好的编程习惯是:所有变量应当在使用前进行声明,最好带有注释。

一、变量的赋值

变量声明后就可以给其赋值,有两种方式:值赋值和引用赋值。
1、值赋值
$color = "red" ;
$sum = 12+"15" ; /* $sum = 27 */

2、 若希望两个变量指向一个值的同一个副本,则需要通过引用赋值。
引用赋值
所创建的变量与另一个变量引用的内容相同,如果多个变量引用了同一个内容,修改其中任意一个变量,在其余的变量上都将有所反映。
例子:
<?php
$value1 = "hello" ;
$value2 = &value1 ; /*$value1 and $value2 both equal "hello" .*/
$value2 = "goodbye" ; /*$value1 and $value2 both equeal "goodbye". */
?>

二、变量的作用域
PHP脚本的任何位置都可以声明变量,但声明变量的位置会大大影响访问变量的范围。这个可访问的范围称为作用域(scope)。
PHP变量的4中作用域:
△ 局部变量
△ 函数参数
△ 全局变量
△ 静态变量
1、局部变量
在函数中声明的变量认为是局部变量,只能在函数中引用,退出声明变量的函数时,该变量及相应的值就会撤销。消除了导致全局访问的变量被有意或无意修改的可能性。

$x = 4 ;
function assignx ( ) {
$x = 0 ;
print "\$x inside function is $x . <br>" ;
}
assignx ( ) ;
print "\$x outside of function is $x . <br>" ;
代码的执行结果为:
$x inside function is 0 .
$x outside function is 4 .

2、函数参数
PHP和其他编程语言一样,任何接受参数的函数都必须在函数首部中声明这些参数。虽然这些参数接受函数外部的值,但退出函数后就无法再访问这些参数。(按引用传递的参数除外)
例如:
function x10 ( $value ) {
$value = $value * 10 ;
return $value ;
}
函数执行完毕,参数即将撤销。

3、全局变量
与局部变量相反,全局变量可以在程序的任何位置访问。当在函数中改变全局变量时,需要在该函数中将变量显示地生命为全局变量,只要在函数中的该变量前加上GLOBAL即可。
例如:
$somevar = 15 ;
function addit ( ) {
GLOBAL $somevar ;
$somevar ++ ;
print "somevar is $somevar" ;
}
addit ( ) ;
$somevar 显示的值应为16 ,但是,若去掉 GLOBAL $somevar ; 这行,变量$somevar 将被隐含的设置为0,再加1 ,最后显示的值就是1 。
声明全局变量的另一方法是使用PHP的$GLOBAL数组,如下:
$somevar = 15 ;
function addit ( ) {
$GLOBALS[ 'somevar' ]++ ;
}
addit ( ) ;
print "somevar is ". $GLOBALS[ 'somevar' ] ;
返回值如下: somevar is 16 .

4、静态变量
静态(static)作用域。普通变量的函数参数在函数结束时会撤销,但静态变量在函数退出时不会丢失值,并且再次调用此函数时还能保留这个值。在汴梁明前加上关键字 STATIC 就可以声明一个静态变量。
STATIC $somevar ;
考虑一个例子:
function keep_track ( ) {
STATIC $count = 0 ;
$count ++ ;
print $count ;
print "<br>" ;
}
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
若$count 没有被指明为静态(相应的,$count就是一个局部变量),输出将会是
1
1
1
1
因为$count是静态的,它会在每次执行函数时保留前面的值。输出如下:
1
2
3
4
静态作用域对于递归函数很有用。递归函数(recursive function)是一个功能强大的编程概念,它是一个可以重复调用自身的函数,直到满足某个条件为止。

5、 PHP的超级全局变量
PHP提供了很多有用的预定义变量,可以在执行脚本的人和位置访问,用于提供大量与环境有关的信息。可以通过这些变量获得关于当前用户会话、用户操作系统环境和本地操作环境等详细信息。PHP会创建部分变量,而其他许多变量的可用性和值则取决于操作系统和WEB服务。

输出所有预定义变量:
foreach ( $_SERVER as $var => $value ) {
echo "$var => $value <br>" ;
}
显示用户的IP地址:
print "HI!Your IP address is ".$_SERVER[ ' REMOTE_ADDR' ] ;

PHP中要使用预定义变量数组,必须在PHP.INI文件中启用配置参数 track_vars 。

PHP 相关文章推荐
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
php 生成饼图 三维饼图
Sep 28 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
PHP工程师VIM配置分享
Dec 15 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
写php分页时出现的Fatal error的解决方法
Apr 18 #PHP
zend api扩展的php对象的autoload工具
Apr 18 #PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 #PHP
ThinkPHP采用模块和操作分析
Apr 18 #PHP
PHP学习之数组值的操作
Apr 17 #PHP
PHP学习之数组的定义和填充
Apr 17 #PHP
PHP学习之正则表达式
Apr 17 #PHP
You might like
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
PHP 日常开发小技巧
2009/09/23 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
利用Python破解斗地主残局详解
2017/06/30 Python
django模板语法学习之include示例详解
2017/12/17 Python
Python实现翻转数组功能示例
2018/01/12 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
发票退票证明
2015/06/24 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
redis 解决库存并发问题实现数量控制
2022/04/08 Redis