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 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
php适配器模式介绍
Aug 14 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
php计算一个文件大小的方法
Mar 30 PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php利用header函数下载各种文件
Aug 24 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 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
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP使用函数用法详解
2018/09/30 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
vue 请求后台数据的实例代码
2017/06/22 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
PHP统计代码行数的小代码
2019/09/19 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python实现对变位词的判断方法
2020/04/05 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
学校安全教育制度
2014/01/31 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Python基础之Socket通信原理
2021/04/22 Python
Java集成swagger文档组件
2021/06/28 Java/Android