变量是用于储存信息的容器.
命名规则
可变变量
变量名可变, 将变量名存储在另外一个变量中
$$
$user = 'ali';
$$user = 'haha'; //可变变量
=
值传递= &
地址传递
$test1 = 'hello';
$test2 = $test1;
$test3 = &$test1;
printf("test1:%s, test2:%s, test3:%s", $test1,$test2,$test3); // 输出为test1:hello, test2:hello, test3:hello
echo "<hr>";
// test1更新值,
$test1 = 'world';
printf("test1:%s, test2:%s, test3:%s", $test1,$test2,$test3); // 输出为test1:world, test2:hello, test3:world
$test1 = 'hello';
$test3 =& $test1;
unset($test1);
printf("test1:%s, test3:%s",$test1,$test3); //输出为 test1:, test3:hello
变量的类型转换方式
php是弱类型语言,变量的类型随值的变化而变化.
php变量有8种变量类型:4标量类型(int, float, string, bool); 2复合类型(array, object); 2特殊类型(resource, null)
$num1='12';
var_dump($num1,(int)$num1,(float)$num1); //string(2) "12" int(12) float(12)
+ - * /
会把变量转化为数字运算..
会把变量转为字符参与运算.
// 数值运算
$foo = '100pages';
@$foo += 200;
var_dump($foo);// int(300)
// 字符串拼接符
var_dump($foo);// int(300)
echo 'how are you' . 100 . '<br>';
if (!'0') : // 0为false
echo 'true'; //true
endif;
settype($p,'integer');
echo gettype($p);//integer
变量的作用域
1、全局变量:在函数外面定义的变量. $GLOBALS
保存的是全局变量的所有的值
2、局部变量:在函数里面定义的变量,默认情况下,函数内部是不会去访问函数外部的变量,要在一个函数中访问一个全局变量,需要使用 global
关键字。
3、超全局变量:是在全部作用域中始终可用的内置变量
$GLOBALS
: 引用全局作用域中可用的全部变量
$_SERVER
: 服务器和执行环境信息
$_GET
:通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
$_POST
:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
$_FILES
:通过 HTTP POST 方式上传到当前脚本的项目的数组
$_COOKIE
:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
$_SESSION
:当前脚本可用 SESSION 变量的数组
$_REQUEST
: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
$_ENV
: 通过环境方式传递给当前脚本的变量的数组
常量是一个简单值的标识符(名字)。常量值被定义后,在脚本的其他任何地方都不能被改变。
注意:常量没有作用域的概念
命名规则
由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
常量的定义
const GENDER = '女';
define()
函数定义常量
define('%%', 'tom');
echo constant('%%');
类的常量
类常量只能使用const定义
php中魔术常量有哪些?
魔术常量它们的值随着它们在代码中的位置改变而改变
名称 | 说明 |
---|---|
LINE | 文件中的当前行号。 |
FILE | 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 |
DIR | 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。 |
FUNCTION | 当前函数的名称。匿名函数则为 {closure}。 |
CLASS | 当前类的名称。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。 |
TRAIT | Trait 的名字。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。 |
METHOD | 类的方法名。 |
NAMESPACE | 当前命名空间的名称。 |
ClassName::class | 完整的类名, |