extract() Function
extract()函数是PHP中的内置函数。函数的作用是:对变量进行数组转换。也就是说,它将数组键转换为变量名,将数组值转换为变量值。换句话说,我们可以说extract()函数将变量从数组导入符号表。
语法
1 | int extract($input_array, $extract_rule, $prefix) |
参数:extract()函数接受三个参数,其中一个是必须的,另外两个是可选的。所有三个参数描述如下:
- $input_array:这个参数是必需的。这指定了要使用的数组。
- $extract_rule:这个参数是可选的。函数的作用是:检查变量名是否无效,以及与现有变量名的冲突。此参数指定如何处理无效名称和冲突名称。这个参数可以取以下值:
- EXTR_OVERWRITE:这个规则告诉我们,如果发生冲突,就重写现有的变量。
- EXTR_SKIP: 这个规则告诉我们,如果发生冲突,不要覆盖现有的变量。
- EXTR_PREFIX_SAME:这个规则告诉我们,如果存在冲突,那么根据$prefix参数在变量名前加上前缀。
- EXTR_PREFIX_ALL:这个规则告诉前缀所有变量的名称都符合$prefix参数。
- EXTR_PREFIX_INVALID:根据参数$prefix的规定,这个规则只告诉前缀无效/数值变量名。
- EXTR_IF_EXISTS:这个规则告诉我们,如果变量已经存在于当前符号表中,就重写它,否则什么也不做。
- EXTR_PREFIX_IF_EXISTS:这个规则告诉我们,只有在当前符号表中存在相同变量的非前缀版本时,才创建带前缀的变量名。
- $prefix:这个参数是可选的此参数指定前缀。前缀由一个下划线字符自动从数组键中分离出来。另外,只有当参数$extract_rule设置为EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID或EXTR_PREFIX_IF_EXISTS时,才需要使用这个参数。
返回值:extract()函数的返回值是一个整数,它表示从数组中成功提取或导入的变量的数量。
例子
1 2 3 4 5 | 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()的工作:
程序1
1 2 3 4 5 6 7 8 9 10 11 | <?php // input array $state = array("AS"=>"ASSAM", "OR"=>"ORRISA", "KR"=>"KERELA"); extract($state); // after using extract() function echo"\$AS is $AS\n\$KR is $KR\n\$OR is $OR"; ?> |
输出
1 2 3 | $AS is ASSAM $KR is KERELA $OR is ORRISA |
程序2
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $AS="Original"; $state = array("AS"=>"ASSAM", "OR"=>"ORRISA", "KR"=>"KERELA"); // 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"; ?> |
输出
1 2 3 4 | $AS is Original $KR is KERELA $OR is ORRISA $dup_AS = ASSAM |
参考