常用的函数

  • String(字符串)
    • “":空字符串
    • “0”:作为字符串的0
  • Integer(整型)
    • 0:作为整数的0
  • Float(浮点型)
    • 0.0:作为浮点数的0
  • Boolean(布尔型)
    • FALSE
  • Array(数组)
    • array()/[]:一个空数组
  • NULL(空值)
    • NULL
  • Object(对象)
  • Resource(资源类型)

empty

empty函数:当变量为类型的零值,或变量未定义才返回true.

isset

isset:变量已设置并且非NULL, 如果是则为true. is_null:值为null为true.正好是isset的反结果,我们可以把它看成是!isset,是isset的一个逆操作。

$var (一个声明了,但是没有值的变量)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

// 测试isset函数
$data=[null, "null", ""," ", 0, 0.0 ,"0", true, false ,[]];
foreach ($data as $key => $val){
    //只有 null返回false,其它都为真
    echo $key . '=>' ;
    echo var_dump(isset($val));  // isset
}
/*
0=>bool(false)
1=>bool(true)
2=>bool(true)
3=>bool(true)
4=>bool(true)
5=>bool(true)
6=>bool(true)
7=>bool(true)
8=>bool(true)
9=>bool(true)
*/
echo "\r\n------------\r\n";
// 测试empty函数
$data=["","0", 0, 0.0, false, null, [], " ", "null", true];
//     "","0", 0, 0.0, false, null, [] --都是对应类型的零值
foreach ($data as $key => $val){
    echo $key . '=>' ;
    echo var_dump(empty($val)); // empty
}
/*
0=>bool(true)
1=>bool(true)
2=>bool(true)
3=>bool(true)
4=>bool(true)
5=>bool(true)
6=>bool(true)
7=>bool(false)
8=>bool(false)
9=>bool(false)
*/

引用

在PHP 中引用的意思是:不同的名字访问同一个变量内容。

C语言中的指针里面存储的是变量的内容,在内存中存放的地址。

变量引用与取消引用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
    $a="我初始化了";
    $b =&$a;
    echo $a ."_".$b . "\r\n";
    $b="我改变了";
    echo $a ."_".$b . "\r\n";


    
    function test(&$tmp){
        $tmp=$tmp . "  (from_china)";
    }
    $varFirst= "hi, I'm tim";
    echo $varFirst;
 
    test($varFirst);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了
 
    echo "\r\n";
    echo $varFirst;
/*
我初始化了_我初始化了
我改变了_我改变了
hi, I'm tim
hi, I'm tim  (from_china)
*/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
    $a = 1;
    $b =&$a;
    $b =100;
    echo $a."_".$b."\r\n";
    unset ($a);
    $b =1000;
    echo $a."_".$b;

/*
100_100
_1000
		
PHP Notice:  Undefined variable: a in /usercode/file.php on line 8
*/    

函数引用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function &test(){
    static $b=0;//申明一个静态变量
    $b=$b+1;
    echo $b . "\r\n";
    return $b;
}
 
$a=test();  
$a=5;
$a=test();
 
$a=&test(); // &test()才会把返回值引用到$a身上
$a=5;
$a=test();

/*
1
2
3
6
*/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
class talker{
 
    private $data = 'Hi';
 
    public function & get(){
        return $this->data;
    }
    
    public function out(){
        echo $this->data;
    }  
 
}
 
$aa = new talker();
$d = &$aa->get();
 
$aa->out();
$d = 'How';
$aa->out();
$d = 'Are';
$aa->out();
$d = 'You';
$aa->out();

// HiHowAreYou

作用域

变量的作用域

变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中才可以被使用,这个作用范围称为变量的作用域。总体来说,变量根据定义的位置分为局部变量和全局变量。

  1. 局部变量: 局部变量是在函数内部定义的变量,其作用域仅限于函数内部,离开该函数后再使用此变量是非法的。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
    function test(){
        {
            $tmp="init";        //局部作用域在函数内部生效,不像C语言一样,if作用域内部的变量在外部不可见
            echo $tmp . "\r\n";
        }
        $tmp=$tmp . " again";
        echo $tmp . "\r\n";
    }

    test();
  1. 全局变量: 全局变量是指在函数外部定义的变量,其作用域从变量定义处开始,到本程序文件末尾结束。

  2. 静态变量: 局部变量从存储方式上可分为动态存储类型和静态存储类型。函数中的局部变量默认都是动态存储类型,即在函数调用结束后自动释放存储空间。但有时希望在函数结束后,局部变量依然保存在内存中,这时就需要使用static关键字。

static修饰的变量称为静态变量,其存储方式为静态存储,即在第一次调用函数时该变量被初始化,下次调用函数时该变量的值并不会消失。