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 相关文章推荐
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
destoon之一键登录设置
Jun 21 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
Laravel框架自定义分页样式操作示例
Jan 26 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python实现图片压缩代码实例
2019/08/12 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
公司营业员的自我评价
2014/03/04 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
出售房屋委托书范本
2014/09/24 职场文书
画展邀请函
2015/01/31 职场文书
中秋节主题班会
2015/08/14 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang