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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
php实现微信扫码支付
Mar 26 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 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学习笔记之二 php入门知识
2011/01/12 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
python清除字符串里非数字字符的方法
2015/07/02 Python
python实现k-means聚类算法
2018/02/23 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
利用python爬取有道词典的方法
2020/12/08 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
会计电算化专业求职信
2014/06/10 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
优秀员工事迹材料
2014/12/20 职场文书
个人汇报材料范文
2014/12/30 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android