使用php编程,在项目中常见知识点

一. PHP基本数据类型

Boolean 布尔类型,Integer 整型,Float 浮点型,String 字符串,Array 数组,Object 对象,Resource 资源类型,NULL,Callback / Callable,

二. 魔术常量和方法

__LINE,__FILE, __DIR,__FUNCTION,__CLASS,__TRAIT,__METHOD,__NAMESPACE


__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo()

三. 超全局变量

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV

四. global和$GLOBAL

在php程序的生命周期中,超全局变量$GLOBAL记录了程序中的全局变量,包含了全部变量的全局组合数组,变量的名字就是数组的键。但是PHP中全局变量在函数中使用时必须提前申明为全局,否则为函数内的局部变量。可以通过$GLOBALS或者global在函数中声明,但二者并不相同。看个例子:

  • $GLOBALS

// G_a

1
2
3
4
5
6
7
8
9
10
function test() {
$GLOBALS['var1'] = $GLOBALS['var2'] + $GLOBALS['var3'];
}
$var1 = 1;
$var2 = 2;
$var3 = 3;
test();
var_dump( $var1 ); // 5

// G_b

1
2
3
4
5
6
7
8
9
10
11
function test() {
// GLOBALS声明
$GLOBALS['var2'] = & $GLOBALS['var1'];
}
$var1 = 1;
$var2 = 2;
$var3 = 3;
test();
var_dump( $var2 ); // 1
  • global

// g_a

1
2
3
4
5
6
7
8
9
10
11
12
function test() {
// global声明
global $var1, $var2, $var3;
$var1 = $var2 + $var3;
}
$var1 = 1;
$var2 = 2;
$var3 = 3;
test();
var_dump( $var1 ); // 5

// g_b

1
2
3
4
5
6
7
8
9
10
11
12
function test() {
// global声明
global $var1, $var2, $var3;
$var2 = & $var1;
}
$var1 = 1;
$var2 = 2;
$var3 = 3;
test();
var_dump( $var2 ); // 2

global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致。

五. empty和isset

1.isset

方法:

bool isset ( mixed $var [, mixed $… ] )

说明:

检测变量是否NULL,为NULL时返回FALSE,否则为TRUE,$var不可以是表达式

  • 当$var不存在时
1
2
3
// 一个变量并不存在
var_dump( isset($val) );
// 输出:false
  • 当只有一个参数时
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$var = 0;
var_dump( isset($var) ); // boolean true
$var = 0.0;
var_dump( isset($var) ); // boolean true
$var = '0';
var_dump( isset($var) ); // boolean true
$var = "0";
var_dump( isset($var) ); // boolean true
$var = '';
var_dump( isset($var) ); // boolean true
$var = FALSE;
var_dump( isset($var) ); // boolean true
$var = NULL;
var_dump( isset($var) ); // boolean false
$var = array();
var_dump( isset($var) ); // boolean true
$var;
var_dump( isset($val) ); // boolean false
$var = 123;
unset($var);
var_dump( isset($val) ); // boolean false
  • 当有多个参数时

如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

1
2
3
4
$var1 = 10;
$var2 = '';
$var3 = array(1,2);
var_dump( isset($var1, $var2, $var3) ); // boolean true

2.empty

方法:

bool empty ( mixed $var )

说明:

检查一个变量是否为空,在更高版本下$var可以是表达式

  • 当$var不存在时
1
2
3
// 一个变量并不存在
var_dump( empty($val) );
// 输出:true
  • 当$var存在时,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE,其中以下值或变量被认为是零或空

‘’, 0, 0.0, ‘0’, NULL, FALSE, array(), $var;

1
2
3
4
5
6
7
8
9
10
11
// 零或空
var_dump( empty(0) ); // boolean true
var_dump( empty(0.0) ); // boolean true
var_dump( empty('0') ); // boolean true
var_dump( empty("0") ); // boolean true
var_dump( empty('') ); // boolean true
var_dump( empty(FALSE) ); // boolean true
var_dump( empty(NULL) ); // boolean true
var_dump( empty(array()) ); // boolean true
$var;
var_dump( empty($val) ); // boolean true

ps: php中文手册