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 相关文章推荐
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
请离开include_once和require_once
Jul 18 PHP
php根据年月获取季度的方法
Mar 31 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
yii2.0框架场景的简单使用示例
Jan 25 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 在文件指定行插入数据的代码
2010/05/08 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
node.js中watch机制详解
2014/11/17 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python看某个模块的版本方法
2018/10/16 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python的in,is和id函数代码实例
2020/04/18 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
央视元宵晚会主持串词
2014/03/25 职场文书
效能监察建议书
2014/05/19 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
捐书仪式主持词
2015/07/04 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js