PHP学习之PHP变量


Posted in PHP onOctober 09, 2006

PHP变量

PHP3支持下面类型的变量:
(一)、内部变量


主要有整数(interger),浮点数(float-point numbers),字符串(string),数组(array),对象(object)。
1 初始化变量


要在PHP中初始化变量, 你只要简单的给它赋值即可。对于大多数类型,这是最直接的。对于数组和对象,可以使用其它方法。
2 初始化数组


数组可以使用这两种方法之一来赋值: 使用一系列连续数值,或使用array()函数构造 (见 Array functions 部分)。


要将连续的数值加进数组,你只需将要赋值赋给不带下标的数组变量。该值会作为数组的最后元素加进数组中。


例:

 $names[] = "Jill"; // $names[0] = "Jill"

 $names[] = "Jack"; // $names[1] = "Jack" 与c、perl相似,
数组下标也是从0开始。
3 初始化对象
要初始化一个对象,需用new语句建立该类型的变量。

 
class foo {


function do_foo() {


echo "Doing foo."; }?

}

  $bar = new foo;

  $bar->do_foo();
4 变量作用域


变量的作用域就是它的有效范围。对于大多数PHP的变量只有一个作用域。在用户自定义函数里采用局部变量作用域。
函数内使用的变量被缺省设置为局部变量。例如:

 $a=1; /* global scope */

 
Function Test() {

 echo $a; /* reference to local scope variable */

 }

 
Test(); 这段程序不会输出任何的东西,因为echo语句要输出局部变量 $a ,而函数内的 $a 从未被赋过值。
你可能注意到这和C语言有点小小的区别,C中全局变量可以直接在函数内引用,除非它被一个局部变量所覆盖。
而这使得人们可能不注意修改了全局变量的值。在PHP中要在函数内部使用全局变量必须显式的说明。
例如:

 $a=1;

 $b=2;

 Function Sum() {

 global $a,$b;


 $b = $a + $b;

}

 Sum();

 echo $b; 上面程序将输出"3"。
通过在函数内部声明$a和$b是全局变量,所要变量都参考全局。一个函数可以操纵的全局变量的数量没有限制。


作用域的另外一个值得注意的地方是static 变量。
一个 static变量存在于局部函数中,但当程序离开这个函数时它的值不会丢失。
考虑下面的例子:

 Function Test() {

 $a=0;

 echo $a;

 $a++;

 }
这个函数是没用的,因为每次调用时它都先把$a赋为 0 然后打出"0"。 对$a++的自加没有任何效果因为函数调用结束后变量
$a 就被释放了。要使记数程序有效记数而不丢掉当前的记数结果,$a 要声名为static变量:

Function Test() {

static $a=0;

echo $a;

$a++;

} 现在,每次调用Test()函数它都会打出$a的值并把增加它的值。 当使用递归函数时静态变量是必不可少的。
递归函数就是调用自己的函数。写递归函数时一定要十分小心,
因为它的循环次数不确定。你必须确保有足够的条件结束递归过程。下面是一个简单的递归函数记数到10:

Function Test() {

 static $count=0;

 $count++;

 
echo $count;

 if($count < 10) {

 Test();

 }


(二) 动态变量

有时使用可变的变量名比较方便。就是说,一个能够被动态赋值和使用的变量名。
一个普通变量的赋值语句如:

$a = "hello";

一个动态变量引用该变量的值作为一个新变量的名字。
在上面例中, hello,可以通过双$用做变量名。
例:

$$a = "world"; 至此,两个变量被定义并存贮在PHP符号树中: $a 的内容是"hello",$hello 的内容是 "world"。
因此,语句: echo "$a ${$a}"; 的显示结果完全等同于: echo "$a $hello"; (三)PHP外部变量 1、HTML表单(GET和POST)


当一个表单提交给PHP3 script时,PHP会自动得到表单中的变量。例如:

Name:  


当按下”submit”后,PHP3会自动产生变量:$name,其中包含了用户输入的所有内容。 2、IMAGE SUBMIT 变量名


当提交一个表单时,可以通过下面标记用一副图代替标准的提交按钮:

  当用户点击该图时,
两个附加变量sub_x和sub_y就会伴随表单一起送到server上。其中包含了用户在图上点击处的坐标。
有经验的人可能注意到浏览器实际送出的名字包含一个句号而不是下划线,但PHP自动将句号转换成了下划线。
3、HTTP Cookies


PHP支持HTTP cookies。Cookies在客户端浏览器存储数据,以此和用户保持联络或验证用户身份。
你可以使用setcookie() 函数来设置cookies。 Cookies是HTTP请求头的一部分,所以必须在任何输出数据返回给用户浏览器前
调用SetCookie()函数。它类似于 Header() 函数的限制。任何用户端返回的cookies都将被自动转换为标准的PHP变量,
就象GET和POST方法的数据。


如果要在一个 cookie中设置多个值,要给这个cookie的名字加上 [] ,
例如:

SetCookie("MyCookie[]","Testing", time()+3600);


注意:新的cookie将覆盖掉你的浏览器中已有的同名cookie,除非它们具有不同的路径或域。
4、环境变量


PHP自动将环境变量转换为普通的变量。


echo $HOME; /* Shows the HOME environment variable, if set. */


尽管来自GET,POST 及 Cookie结构的信息也会被自动转化为PHP的变量, 但最好明确的从环境变量中读取它们以确保获得正确的值。
为此可使用 getenv() 函数。也可以通过 putenv() 函数设置变量。
变量类型转换


PHP中不需要(也不支持)在变量定义时做显式的类型声明;一个变量的类型取决于它的值的类型。
也就是说,如果你给变量var 赋了一个字符串值,var 就成为字符串变量。如果你又赋了一个整型值给var, 它就变成了一个整型变量。

一个PHP自动类型转换的例子是加法操作符 '+'。如果任何一个操作数是double型,则所有的操作数按 double类型来计算,
结果也是double型的。否则,所有的操作数按integer类型来计算, 结果也是integer型的。注意:操作数本身的类型不发生变化;
类型变换仅在计算时做

$foo = "0"; // $foo is a string (ASCII 48)

$foo++; // $foo is the string "1" (ASCII 49)

$foo += 1; // $foo is now an integer (2)

$foo = $foo + 1.3; // $foo is now a double (3.3)


$foo = 5 + "10 Little Piggies"; // $foo is a double (15)

$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
要改变变量的类型,也可用settype() 函数。
1、强制类型转换


PHP中的强制类型转换和C中一样: 在需要进行类型强制转换的变量前的括号中写出想要的类型名。

 
$foo = 10; // $foo is an integer

 $bar = (double) $foo; // $bar is a double

 
允许的强制转换是:

(int), (integer) - cast to integer

(real), (double), (float) - cast to double


(string) - cast to string

(array) - cast to array  

(object) - cast to object
注意:括号中可以含有tab或空格,下面的函数将被计算:

$foo = (int) $bar;

$foo = ( int ) $bar;
2、字符串转换


当字符串作为数值类型计算时,结果的值和类型按以下方式决定。


如果字符串中包含任何'.', 'e',及'E'字符,则被作为double类型计算。否则,就作为integer类型计算。


该值从字符串最开始算起。如果字符串是合法的数字,则使用该值,否则值为 0 。
合法的数字是一个符号位(可选),后跟一位或几位数字(也可含有一个十进制的小数点), 后跟一位可选的指数。
指数是一个 'e' 或 'E'后跟一个或几个数字。

$foo = 1 + "10.5"; // $foo is a double (11.5)


$foo = 1 + "-1.3e3"; // $foo is a double (-1299)

$foo = 1 + "bob-1.3e3"; // $foo is a double (1)


$foo = 1 + "bob3"; // $foo is an integer (1)

$foo = 1 + "10 Small Pigs"; // $foo is an integer (11)


$foo = 1 + "10 Little Piggies"; // $foo is a double (11); the string contains 'e' 

PHP 相关文章推荐
PHP初学者头疼问题总结
Jul 08 PHP
通过文字传递创建的图形按钮
Oct 09 PHP
为查询结果建立向后/向前按钮
Oct 09 PHP
PHP文件上传实例详解!!!
Jan 02 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
解析php dirname()与__FILE__常量的应用
Jun 24 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
PHP闭包定义与使用简单示例
Apr 13 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
php的控制语句
Oct 09 #PHP
PHP4 与 MySQL 交互使用
Oct 09 #PHP
Access数据库导入Mysql的方法之一
Oct 09 #PHP
做一个有下拉功能的留言版
Oct 09 #PHP
留言板翻页的实现详解
Oct 09 #PHP
聊天室php&amp;mysql(二)
Oct 09 #PHP
聊天室php&amp;mysql(一)
Oct 09 #PHP
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP5 安装方法
2006/10/09 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
微信红包随机生成算法php版
2016/07/21 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
给Function做的OOP扩展
2009/05/07 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
在小程序开发中使用npm的方法
2018/10/17 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python实现可变变量名方法详解
2019/07/01 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
软件测试面试题
2015/10/21 面试题
会计与审计毕业生自荐信范文
2013/12/30 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
公司任命书范本
2014/06/04 职场文书
新文化运动的口号
2014/06/21 职场文书
python pygame入门教程
2021/06/01 Python
pt-archiver 主键自增
2022/04/26 MySQL