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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
source.php查看源文件
Dec 09 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
PHP 事务处理数据实现代码
May 13 PHP
PHP判断是否有Get参数的方法
May 05 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
Centos7安装swoole扩展操作示例
Mar 26 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 Token(令牌)设计
2008/03/15 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
初识Node.js
2015/03/20 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
幼儿园数学教学反思
2014/02/02 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
离婚答辩状范文
2015/05/22 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
pytorch实现线性回归以及多元回归
2021/04/11 Python
Go语言中break label与goto label的区别
2021/04/28 Golang
Python超简单容易上手的画图工具库推荐
2021/05/10 Python