文档章节

PHP(三)变量、常量

ChuckleLiu
 ChuckleLiu
发布于 2015/12/21 03:27
字数 1563
阅读 90
收藏 1
点赞 0
评论 2

变量即值不断变化的数据。

常量即值恒定不变的数据。

#变量的类型转换

在PHP中,变量的类型是可以任意转换的,变量定义时不需要明确的类型定义,变量的类型是根据上下文来决定的,当 $sivir 被赋以字符串值, $sivir 就成了字符串类型的变量。当 $sivir 被赋以一个整型值,它就又成了一个整数型变量。

###类型转换有自动转换和强制转换:

####自动转换

一个变量被赋以字符串值,它就是字符串型变量,当它被再次赋以整型值,它就是整型变量。

以合法数字开始的字符串会把那个数字作为值先转换,否则值为0,含有. e E的转换成浮点型,反之为整型。

代码:

<?php
$foo = "0";
var_dump($foo);
$foo += 2;
var_dump($foo);
$foo = $foo + 1.3;
var_dump($foo);
$foo = 5 + "10 dollars";
var_dump($foo);
?>

效果:

string '0' (length=1)
int 2
float 3.3
int 15

####强制转换

语法:变量 = (目标类型) 变量;

把一个变量转换类型后赋给另一个变量。

代码:

<?php
$foo = 10;
var_dump($foo);
$bar = (boolean) $foo;
var_dump($bar);
?>

效果:

int 10
boolean true

#变量的命名

PHP中的变量用一个美元符号$后跟变量名来表示,变量名区分大小写。

#可变变量

可变变量指一个变量的变量名可以动态地设置和使用。

一个可变变量获取了一个普通变量的值作为这个可变变量的变量名,这个变量就叫做可变变量。

在PHP的函数和类的方法中,超全局变量不可以用作可变变量。

代码:

<?php
$a = 'hello';  //定义变量`a`并赋值为“hello”
$$a = 'world';  //定义变量`$$a`并赋值为“world”
var_dump($$a);  
echo "$$a";
?>

效果:

$hello

#预定义变量

指PHP预先定义好的变量,不需要赋值就能直接使用。

  • $_SEVER:服务器变量,包含头信息(header)、路径(path)和脚本位置等组成的数组。

  • $_ENV:环境变量,包含操作系统类型、软件版本等信息组成的数组。

  • $_COOKIE:HTTP Cookies变量,通过HTTP Cookies传递的变量组成的数组。

  • $_GET:HTTP GET变量,通过HTTP GET方法传递的变量组成的数组。

  • $_POST:HTTP POST变量,通过HTTP POST方法传递的已上传文件项目组成的数组。

  • $_FILES:HTTP文件上传变量,通过HTTP POST方法传递的已上传文件项目组成的数组。

  • $_REQUEST:Request变量,次关联数组包含 $_GET、$_POST和$_COOKIE中的全部内容。

  • $_SESSION:Session变量,包含当前脚本中session变量的数组。

  • $_GLOBALS:全局变量,由所有已定义的全局变量组成的数组。

#外部变量

  • 表单提交的数据

  • HTTP Cookies

在HTML表单中传来的值被服务器自动转换为PHP预定义变量$_POST的数组元素。要访问这些元素,把表单中的字段名作为$_POST数组的索引就可以了,即$_POST['name']

#引用

引用类似于建立桌面快捷方式,在变量前面加上&即可。

如:$c = &$a;

当变量a的值改变时,通过变量c引用的得到的值夜改变。

另一种相反的例子:

$b = $a;

类似于上面这种直接把一个变量的值赋给另一个变量,$b就是$a的拷贝,当后来$a的值改变时,$b的值不会改变。

引用可以节约内存资源。

#变量的销毁

在PHP中,变量通常不需要自动销毁,系统会自动释放。但对于性能要求比较高的系统来说,自动释放太慢,达不到高性能的要求,这样就要求编写代码时要及时销毁一些变量,通常是一些包含大量数据的变量。

销毁变量有两种方法:

  • 重新赋值(赋NULL值)

  • 使用 unset() 函数

#常量

常量在程序运行期间不改变它的值,并且常量是全局的,定义了一个常量之后,不用管作用域就可以在脚本的任何地方访问常量。

使用 define() 函数定义。

格式:

<?php    
define("Constant","hello");
var_dump(Constant);
?>

效果:

string 'hello' (length=5)

一个常量一旦被定义,就不能再改变或取消定义。

常量与其他PHP标签符号遵循同样的命名规则,常量没有美元符号。按惯例来说常量名全部使用大写字母。

常量类型包括布尔型、整型、浮点型和字符串。

不能定义资源类型的常量。

####常量与变量的区别

  • 常量前面没有美元符号$

  • 常量的定义只能通过 define()函数

  • 常量可以忽略变量范围的规则而在任何地方定义和访问

  • 常量一旦被定义就不能被重新定义或取消定义

  • 常量的值只能是标量

#魔术常量

除了上面说的预定义变量之外,PHP中还有比预定义变量更多的预定义常量。而这类预定义常量很多都是由不同的扩展库定义的,只有在加载了扩展库之后才会出现,或者在动态加载后,或者在编译时已经包括进去了。

5个魔术常量

  • __LINE__ 文件中的当前行号。
  • __FILE__ 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自php4.0.2起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
  • __FUNCTION__ 函数名称,返回该函数被定义时的名字(php4.3.0新加)。自php5起本常量返回该函数被定义时的名字(区分大小写)。在php4中该值总是小写字母的。
  • __CLASS__ 类的名称,返回该类被定义时的名字(php4.3.0新加)。自php5起本常量返回该类被定义时的名字(区分大小写)。在php4中该值总是小写字母的。
  • __METHOD__ 类的方法名,返回该方法被定义时的名字(php5.0.0新加)。返回该方法被定义时的名字(区分大小写)。

© 著作权归作者所有

共有 人打赏支持
ChuckleLiu
粉丝 2
博文 14
码字总数 10402
作品 0
南岸
加载中

评论(2)

ChuckleLiu
ChuckleLiu

引用来自“leh”的评论

卧槽,你大爷的!
我。。。。。是这么理解的,刚开始学
leh
leh
卧槽,你大爷的!
Smarty模板中使用get、post、request、cookies、session变量的方法

一、在模板中访问页面请求变量 我 们可以在PHP脚本中,通过超级全局数组$GET、$POST、$REQUEST获取在客户端以不同方法提交给服务器的数据,也可以通 过$COOKIE或$SESSION在多个脚本之间跟踪变...

Homelam ⋅ 04/23 ⋅ 0

PHP 变量及常量

一、PHP5.4的基本语法格式 1、PHP的分割符 $php=true; //分号结束语句 ?> 2、PHP注释与语法标识 (1)、单行注释 // 来源于C++的注释 # 来源于C语言的注释 (2)、多行注释 / / 来源于C语言的...

ufo00001 ⋅ 2017/06/27 ⋅ 0

PHP

PHP 一、了解PHP 1. PHP 超文本预处理器 服务器端的脚本语言 是一种被广泛应用的多用途脚本语言 他可以嵌入到html中 尤其适用WEB开发 2. php在web中的应用 服务器端的 嵌入到html中 脚本语言...

方花 ⋅ 2017/11/08 ⋅ 0

ThinkPHP 模板布局

模块继承{extend name="" /} {block name=""} {/block}基础模板 base.html 子模板 块区在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块...

ITCHN ⋅ 2016/12/17 ⋅ 0

PHP面向对象关键知识点回顾

一,类中的析构函数(destruct): 析构函数是自动调用的 析构函数主要用于销毁资源 析构函数的调用顺序是先创建的对象最后被销毁(原理是栈的先进后出) 析构函数什么时候被调用 (1)当程序...

DDDragon ⋅ 2014/08/09 ⋅ 0

[转]SMARTY模板中如何使用get,post,request,cookies,sessio...

SMARTY模板中如何使用get,post,request,cookies,session,server变量 {$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量。例...

GavinTop ⋅ 2013/09/24 ⋅ 0

SMARTY模板中如何使用get,post,request,cookies,session,serv

{$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量。例如,直接在模板中访问页面请求变量、获取访问模板时的时间戳、直接访...

开卷书生 ⋅ 2014/11/15 ⋅ 0

LAMP兄弟连PHP课程学习笔记 第二天 数据类型和变量使用

一、数据类型之间相互转换 1、强制转换: setType(变量, 类型); //类型int, integer, float, double,real, bool, boolena, string, array, object 这个函数将原变量的类型改变 在赋值前使用...

梁小泊 ⋅ 2011/04/09 ⋅ 0

PHP 02 PHP的基础语法

◆输出函数: echo(字符串);//括号可省略不写,输出后无返回值,是什么就输扯什么 print(字符串);//输出后返回一个数值 printf(占位符字符串,填充字符);//输出后返回数字 sprintf(...

Annie可馨 ⋅ 2016/11/04 ⋅ 0

smarty模板 操作 -SESSION相关

{$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量。例如,直接在模板中访问页面请求变量、获取访问模板时的时间邮戳、直接...

安世博 ⋅ 2014/12/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 13分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 19分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 21分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 30分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 33分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 55分钟前 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部