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和ACCESS写聊天室(七)
Oct 09 PHP
PHP中ADODB类详解
Mar 25 PHP
解决MySQL中文输出变成问号的问题
Jun 05 PHP
php 获取完整url地址
Dec 20 PHP
解析php取整的几种方式
Jun 25 PHP
PHP 读取和编写 XML
Nov 19 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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中的一些数组排序方法分享
2012/07/20 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP中文编码小技巧
2014/12/25 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
微信小程序入门教程
2016/11/18 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
vue3.0 上手体验
2020/09/21 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
python如何定义带参数的装饰器
2018/03/20 Python
Django框架多表查询实例分析
2018/07/04 Python
浅述python2与python3的简单区别
2018/09/19 Python
带你认识Django
2019/01/15 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
土木工程毕业生推荐信
2013/10/28 职场文书
自我反省检讨书
2014/01/23 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
中学教师教学工作总结
2015/08/13 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书