1.PHP变量
变量是用于存储信息的”容器”
1.1 变量的命名规则
变量必须以
$
开头,比如$name
。$
不是变量名的一部分,仅仅表示变量名的开始。除了$以外,以字母、下划线开头,后面跟的是字母、数字、下划线。
1.2 PHP 是一门弱类型语言
因为PHP是弱类型语言,所以不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
1.3 传值和传址
传值
传值,保存值的空间是两个,更改一个空间的值不影响另外的变量;
传址
&表示取出变量的地址
传地址,保存值的空间就一个,更改一个变量的值,另一个变量也会变化,因为两个变量指向同一个空间。
1.4 销毁变量
通过unset()
销毁变量,但是注意unset
用来销毁变量名
$a
地址指向的值,并没有被销毁掉,任然可以被$b
获取,但是如果没有变量去获取地址中的值,那么unset()
销毁的变量名指向的地址的值便会由PHP的垃圾回收机制去销毁。垃圾数据就是没有变量引用的数据。
<?php
$a = 10;
$b = &$a;
unset($a);
echo $a; // 为空,因为已经获取不到$a了。
echo $b; // 10
?>
1.5 超全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
超全局变量以$_开头,PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
超全局变量的数据类型都是数组。
1.5.1 $_GET
$_GET
被广泛应用于收集表单数据,在HTML form
标签的指定该属性:"method="get"
。
$_GET
也可以收集URL中发送的数据。
<?php
var_dump ($_GET);
?>
1.5.2 $_POST
$_POST
被广泛应用于收集表单数据,在HTML form
标签的指定该属性:"method="post"
。
1.5.3 $_REQUEST
$_REQUEST
:保存的是post和get的数据
注意: 通过$_REQUEST保存get和post的值,如果有同名的元素, 默认情况下post
的会覆盖get
。
当然,我们可以在配置文件中进行更改。/etc/php.ini.default
(window下是php.ini)。
request order="GP" //表示先接受get,后接受post,如果想反过来就改为'PG'
1.5 可变变量
将变量名存储到另一个变量中
<?php
$a = 'this is test';
$b = 'a';
echo $$b; // this is test
?>
$b
保存的是a
,所以$$b
指的就是$a
, 也就是this is test
2. 常量
默认是全局变量,可以在整个运行的脚本的任何地方使用。
2.1 自定义常量
当一个数据在脚本执行的周期内不发生变化,可以将这个数据保存在常量中。常量前面没有$。
语法:define(常量名,常量值,是否区分大小写),默认是区分大小写的。
<?php
define('NAME','好好学习,天天向上');
echo NAME; // 好好学习,天天向上
echo name; // name (常量默认是区分大小写)
?>
更改为不区分大小写:
<?php
define('NAME','好好学习,天天向上', true);
echo NAME; // 好好学习,天天向上
echo name; // 好好学习,天天向上
?>
定义常量可以用特殊字符,但是调用的时候必须通过constant
关键字调用
<?php
define('0_0','好好学习,天天向上');
echo constant('0_0'); // 好好学习,天天向
?>
常量一旦定义,就不能再重新定义,可以在定义常量的时候先通过defined
函数来判断常量是否已经定义。
<?php
define('MSG','好好学习,天天向上');
if (defined('MSG')) {
echo '已经定义过了'; // 已经定义过了
} else {
define('MSG','好好学习,天天向上'); //如果没有定义的话,那就重新定义
}
?>
2.2 预定义常量
指的是在PHP中已经定义的常量。
例如:
<?php
echo PHP_VERSION; // 7.1.16 PHP的版本
echo PHP_OS; //Darwin 运行系统
?>
2.3 PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
<?php
echo __LINE__ ; //文件中的当前行号。
echo __FILE__ ; //文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
echo __DIR__ ; //文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
echo __FUNCTION__ ; //函数名称
echo __CLASS__ ; // 类的名称
echo __TRAIT__ ; //Trait 名包括其被声明的作用区域(例如 Foo\Bar)
echo __METHOD__ ; // 类的方法名
echo __NAMESPACE__ ; //当前命名空间的名称(区分大小写)
?>
2.4 显示所有常量
<?php
var_dump(get_defined_constants(true)); //true表示所有的常量按照类分别
?>
这里在提示下,而我们也可以使用const
定义常量
<?php
const NAME = 'hcd';
echo NAME; // hcd
?>