PHP函数 extract 与 compact 变量与数组互转

PHP函数 extract() 与 compact() 是一对执行相反操作的函数,变量与数组相互转化。

compact() 函数

简介

compact() 函数创建一个由参数所带变量组成的数组。如果参数中存在数组,该数组中变量的值也会被获取。

简单来说,compact() 函数就是将一系列变量转换成数组形式。

返回

一个关联数组,键名为函数的参数,键值为参数中变量的值。

注释:任何没有变量名与之对应的字符串都被略过。

实例

$firstname = "Peter";
$lastname = "Griffin";
$age = "38";

$name = array("firstname", "lastname");
$result = compact($name, "location", "age");

print_r($result);

输出:

Array
(
[firstname] => Peter
[lastname] => Griffin
[age] => 38
)

compact() 函数

语法

extract(array, extract_rules, prefix)

简介

extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。

简单来说,extract() 函数就是将数组转换成变量的形式。

第二个参数 extract_rules 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。

实例

<?php
$a = 'Original';
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>

输出:

$a = Cat; $b = Dog; $c = Horse

输出全部参数,如遇相同变量则输出覆盖值和加前缀的被覆盖值:

<?php
$a = 'Original';
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");

extract($my_array, EXTR_PREFIX_SAME, 'dup');

echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";
?>

输出:

$a = Original; $b = Dog; $c = Horse; $dup_a = Cat;