extract和compact是一组具有相反功能的函数
我们先来介绍extract()
php-Manual上对其功能的解释是: 从数组中将变量导入到当前的符号表
那么通俗来讲是什么意思呢?
通俗来说就是将数组中的键值对转换为变量和值
我们来通过一个小demo来理解这个函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$a = array(
"Monday" => "星期一",
"Tuesday" => "星期二",
"Wednesday" => "星期三",
"Thursday" => "星期四",
"Friday" => "星期五",
"Saturday" => "星期六",
"Sunday" => "星期天"
);
print_r($a);
echo "<br>";
echo $Monday;
echo "<br>";
echo $Tuesday;
echo "<br>";
echo $Wednesday;

运行结果:

我们可以看到报错了,因为这三个变量都没有定义
那么我们怎样添加一行代码使它正常运行呢,这个时候就要extract出场了,我们可以使用extract(数组名)将数组中的每一个键名注册为一个变量,变量的值就是数组键对应的值
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$a = array(
"Monday" => "星期一",
"Tuesday" => "星期二",
"Wednesday" => "星期三",
"Thursday" => "星期四",
"Friday" => "星期五",
"Saturday" => "星期六",
"Sunday" => "星期天"
);
$num = extract($a); //注册数组元素为变量,并返回注册成功的数量
print_r($a);
echo "<br>";
echo $Monday;
echo "<br>";
echo $Tuesday;
echo "<br>";
echo $Wednesday;
echo "<br>";
echo $num;

运行结果:

我们可以看到这几个变量已经创建了,最后的7是函数的返回值,代表成功注册的变量数。


php-Manual对compact()的介绍是:用于建立一个数组,包括变量名和它们的值
该函数的作用和extract刚好相反,extract是用数组来注册变量,compact是用变量来建立数组
写一个demo来验证一下:

1
2
3
4
5
6
7
<?php
$a = "harry";
$b = "bob";
$c = "kiven";

$d = compact('a','b','c');
print_r($d);

运行结果:

很简单,我们只需要给compac提供变量名,它就能将变量名复制作为数组的键名,变量值复制作为键值。

× 请我吃糖~
打赏二维码