PHP之变量、常量学习笔记


Posted in PHP onMarch 27, 2008

有关变量的传地址赋值

PHP 3 中,变量总是传值赋值。PHP 4 提供了另外一种方式给变量赋值:传地址赋值。使用传地址赋值,即简单地追加一个(&)符号到将要赋值的变量前(源变量)。这意味着新的变量简单的引用了原始变量,改动新的变量将影响到原始变量,反之亦然。

<?php
$foo = 'Bob';
$bar = &$foo;
$bar = "My name is $bar";
echo $bar;
echo $foo; 
?> 

变量foo只在首行被赋值,正常应输出为“Bob”,然而传址赋值给变量bar,在变量bar值发生变化的同时,变量foo的值也发生了变化。

关于(超)全局变量

PHP全局变量的声明是在引用变量时声明的,而非在程序首行定义、赋值变量时来定义是全局还是局部变量。

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;
$b = $a + $b;
}

Sum();
echo $b;
?> 

如果函数Sum()内没有使用global声明全局变量,程序会报错未定义的变量。

当然,在PHP中还有一些变量在某程序功能范围内是不需要global声明,这些变量称为 超全局变量,而这些超全局变量基本都不是用户自定义的,而是PHP预定义的一些变量,比如 $_GET、$_POST、$_COOKIE等。

有关可变变量

PHP中比较有意思的可变变量,比如 $a="bruce" ,还可以使用 $$a 表示为 $bruce ,即可变变量是使用的两个美元符号。

但其中在 $$a[1] 中,是 $a[1] 作为一个变量,还是 $$a 作为一个变量并取出该变量中索引为 [1] 的值?这里没有前后的依次关系,而是使用 ${$a[1]} 或 ${$a}[1] 来表示上述两种情况。

=========================================================

关于常量

常量区别于变量,从常量被定义起其范围就是全局的

量默认为大小写敏感,按照惯例常量标识符总是大写的

常量前面没有美元符号($)

常量一旦定义就不能被重新定义或者取消定义

常量只能用 define() 函数定义,而不能通过赋值语句

比如 define("MYNAME","cnbruce") 就是定义了一个值为“cnbruce”的MYNAME常量

<?php
define("MYNAME","cnbruce");
$MYNAME="cnrose";
echo MYNAME;
echo $MYNAME;
?> 

另外,如何将常量和变量的值一起输出,这需要涉及到PHP的字符串运算,使用英文句号(.)可将字符串连接合并成新的字符串,类似ASP中的&。

echo MYNAME.",".$MYNAME; 输出为“cnbruce,cnrose”

和变量中的预定义变量一样,PHP也有预定义常量(或称魔术常量),即不需要define() 函数定义。比如

__FILE__ 表示文件的完整路径和文件名,类似于ASP中Server.Mappath当前文件

<?php
echo __FILE__;
?> 

PHP预定义常量分为:
内核预定义常量,在 PHP 内核、Zend 和 SAPI 模块中定义的常量
标准预定义常量,PHP 中默认定义的常量 

PHP 相关文章推荐
PHP开发文件系统实例讲解
Oct 09 PHP
php array_intersect()函数使用代码
Jan 14 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 PHP
is_file和file_exists效率比较
Mar 14 PHP
php日历[测试通过]
Mar 27 #PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 #PHP
php中cookie的作用域
Mar 27 #PHP
简单的PHP图片上传程序
Mar 27 #PHP
php中变量及部分适用方法
Mar 27 #PHP
php Undefined index和Undefined variable的解决方法
Mar 27 #PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 #PHP
You might like
深入理解PHP原理之执行周期分析
2016/06/01 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
一个用js实现控制台控件的代码
2007/09/04 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
python设置检查点简单实现代码
2014/07/01 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
函授本科个人自我鉴定
2014/03/25 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
助学贷款贫困证明
2014/09/23 职场文书
烟台的海导游词
2015/02/02 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis