extract()函数是PHP中的一个内置函数,用于执行数组到变量的转换,即将数组的键名转换为变量名,数组的值转换为对应的变量值。换句话说,extract()函数将数组中的变量导入到符号表中。
语法:
int extract(input_array,extract_rule, $prefix)
参数:extract()函数接受三个参数,其中一个是必需的,另外两个是可选的。以下是这三个参数的描述:
1.$input_array:该参数是必需的。指定要使用的数组。
2.$extract_rule:该参数是可选的。extract()函数会检查无效的变量名和与现有变量名冲突的情况。该参数指定如何处理无效和冲突的名称。该参数可以取以下值:
EXTR_OVERWRITE:该规则指示如果存在冲突,将覆盖现有变量。
EXTR_SKIP:该规则指示如果存在冲突,不要覆盖现有变量。
EXTR_PREFIX_SAME:该规则指示如果存在冲突,则根据$prefix参数对变量名添加前缀。
EXTR_PREFIX_ALL:该规则指示根据$prefix参数给所有变量名添加前缀。
EXTR_PREFIX_INVALID:该规则指示只根据$prefix参数对无效/数字变量名添加前缀。
EXTR_IF_EXISTS:该规则指示只有在当前符号表中已经存在该变量时才覆盖该变量,否则不执行任何操作。
EXTR_PREFIX_IF_EXISTS:该规则指示只有在当前符号表中存在相同变量的非前缀版本时才创建带有前缀的变量名。
3.$prefix:该参数是可选的。该参数指定前缀。前缀将自动通过下划线字符与数组键进行分隔。另外,只有在参数$extract_rule设置为EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID或EXTR_PREFIX_IF_EXISTS时,才需要该参数。
返回值:extract()函数的返回值是一个整数,表示成功从数组中提取或导入的变量数。
示例:
Input : array("a" => "one", "b" => "two", "c" => "three")
Output :$a = "one" , $b = "two" , $c = "three"
Explanation: The keys in the input array will become the
variable names and their values will be assigned to these
new variables.
下面这个程序说明了PHP中extract()函数的工作方式:
<?php
// input array
$state = array("AS"=>"ASSAM", "OR"=>"ORISSA", "KR"=>"KERALA");
extract($state);
// after using extract() function
echo"\$AS is $AS\n\$KR is $KR\n\$OR is $OR";
?>
output:
$AS is ASSAM
$KR is KERALA
$OR is ORISSA
示例2:
<?php
$AS="Original";
$state = array("AS"=>"ASSAM", "OR"=>"ORISSA", "KR"=>"KERALA");
// handling collisions with extract() function
extract($state, EXTR_PREFIX_SAME, "dup");
echo"\$AS is $AS\n\$KR is $KR\n\$OR if $OR \n\$dup_AS = $dup_AS";
?>
output:
$AS is Original
$KR is KERALA
$OR is ORISSA
$dup_AS = ASSAM