变量法则
1.超全局变量,任意地方都可以访问
2.常数,一般是全局性,函数内外都可以访问
3.全局变量(一般声明在函数外面) ,函数内不可以访问
4.函数内可以通过global关键词就可以访问全局变量(其实是同一个变量)
5.在函数中创建的静态变量,函数外无法访问,但是这个变量的值一直保留
6.在函数中创建的局部变量,函数外是无法访问的,并且在函数执行结束后失效
内置超全局变量
不管程序的任何地方都可以访问到,也不管是函数内还是函数外,由PHP预先定义好的
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
全局变量
全局变量一般声明在函数外的变量,代码间可以访问函数内不可以访问
如果在函数内要访问呢?加global关键词
<?php $a= 10;
$b = 20;
function addition(){
global $a;
echo $a; //不可以访问,出错
}
addition();
静态变量
静态函数只是在函数体内,在函数外无法访问。但是执行后,其值保留,等待下次函数执行,关键词static
<?php
function addition(){
static $c = 100;
$c++;
echo "<hi>$c</h1>";
}
addition();
addition();
变量销毁
Php一般有自动垃圾回收机制,但是也可以通过手动销段,用函数unset)
数据类型
- 整型
- 浮点型
- 字符串型
- 布尔型
- NULL
- 数组型
- 对象型
整型(Integer)
<?php
$a = 1234; //+进制数
$a=-123; //负数
$a = 0123; //八进制数(等于十进制83)
$a = 0x1A; //十六进制数(等于十进制26)
$a = 0b11111111; //二进制数字(等于十进制255)
浮点型(Float)
<?php
$a = 1.234;
$b = 1.2e3;
NAN属于float
注:浮点型类型转换类似于先将值转换成整型,然后再转换成浮点
字符串型(String)
一般情况是单引号和双引号,还有heredoc语法结构, nowdoc语法结构(<<<)
<?php
echo 'this is a simple string<br>';
$a = 100;
echo "this is a simple string$a";
$f = 200;
<!-- 注意下面的代码:不能有空格,还有只有双引号里面可以带变量 -->
echo "this is {$f}";
布尔类型 (Boolean)
要指定一个布尔值,使用常量TRUE或FALSE。两个都不区分大小写
$foo = True; //设置$foo为 TRUE
NULL(NULL)
特殊的NULL值表示一个变量没有值, NULL类型唯一可能的值就是NULL
- 被赋值为NULL
- 尚未被赋值
- 被unset()
<?php
$var = NULL;
数组型(Array)
PHP中的数组实际上是一个有序映射。映射是一种把values关联到keys的类型
array( key => value, ....
//键(key)可是是一个整数integer或字串string
//值(value)可以是任意类型的值
<?php
$array = array(
"foo" => "bar",
"han" =>"foo"
);
//自PHP 5.4起
$array = [
"foo" => "bar",
"bar" => "foo"
];
规范:key会有如下的强制转换
- 包含有合法整型值的字符串会被转换为整型。例如键名"8"实际会被储存为8,但是"08"则不会强制转换,因为其不是一个合法的十进制数值
- 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名8.7实际会被储存为8
- 布尔值也会被转换成整型。即键名true实际会被储存为1而键名false会被储存为0
- Null会被转换为空字符串,即键名null实际会被储存为”"
- NaN会被转换为空字符串
- 数组和对象不能被用为键名。坚持这么做会导致警告: llegal offset type
key为可选项,如果未指定, PHP将自动使用之前用过的最大integer键名加上1作为新的键名
访问数组(Array)
数组单元可以通过array(key]或者array(key}语法来访问
修改或者新增数组Array
数组单元可以通过array(key]或者array(key}语法来修改或者新增;要删除某键值对,对其调用unset)函数