PHP中extract函数各种用法介绍

直接上代码:

 代码如下 复制代码
<?php
$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

没有定义变量$a $b $c ,也没有赋值,为什么就可以可以获取值了?

比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:

form.html

 代码如下 复制代码

 <form action="action.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">

在action.php中只要使用extract()函数将$_POST全局数据解开:
action.php

 代码如下 复制代码

 <?php
extract($_POST);
//相当于$username = $_POST['username'];
//$password = $_POST['password'];
?>

数组操作

相关例子:

 代码如下 复制代码

<?php

/* 假定 $var_array 是 wddx_deserialize 返回的数组*/

$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_sizen";

?>

上例将输出:

blue, large, sphere, medium
$size 没有被覆盖,因为指定了 EXTR_PREFIX_SAME,这使得 $wddx_size 被建立。如果指定了 EXTR_SKIP,则 $wddx_size 也不会被建立。EXTR_OVERWRITE 将使 $size 的值为“medium”,EXTR_PREFIX_ALL 将建立新变量 $wddx_color,$wddx_size 和 $wddx_shape。

数组2

.适用范围:非数字索引的数组,数组中有键值对;
2.函数创建的变量名是数组中的关键字,变量的值是数组中对应的值;
3.两个可选参数:extract_type和prefix;
    其中extract_type指定处理变量名冲突的方法,默认是EXTR_OVERWRITE,表示覆盖已有的变量,
    当extract_type的值为EXTR_PREFIX_ALL时,给所有创建的变量前加上前缀,前缀为prefix参数提供;
4.数组中元素的关键字必须是有效的变量名,否则将被跳过。
   
实例:

array_extract.php:

 代码如下 复制代码

<html>
    <head>
        <title>Test Array Extract</title>
    </head>
    <body>
        <?php
            $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
            extract($array);
            echo 'Default:<br />';
            echo "$key1 $key2 $key3<br />";
           
            //发生冲突时跳过一个元素
            $key1 = "abc";
            extract($array, EXTR_SKIP);
            echo 'Skip:<br />';
            echo "$key1 $key2 $key3<br />";

            //在所有变量名前加上由prefix参数提供的值
            extract($array, EXTR_PREFIX_ALL, 'my');
            echo 'Prefix_All:<br />';
            echo "$my_key1 $my_key2 $my_key3<br />";
        ?>
    </body>
</html>

是不是很方便呢?
关于此函数用介绍可参考http://www.111cn.net/phper/24/04ef3db43c8278b93cdd9203999b8352.htm

时间: 2024-09-22 09:09:04

PHP中extract函数各种用法介绍的相关文章

C++中strtok()函数的用法介绍_C 语言

函数原型:char *strtok(char *s, const char *delim);Function:分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串.Description:strtok()用来将字符串分割成一个个片段.参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符.在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL.每次调

js中reverse函数的用法详解

 本篇文章主要是对js中reverse函数的用法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 reverse()方法用于颠倒数组中元素的顺序   注意:该方法会改变原来的数组,而不会创建新的数组.   例子:  var  str = ['1','2','3'];   document.write(a);   输出:3,2,1    

javascript中match函数的用法小结

 本篇文章主要是对javascript中match函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 javascript中的match函数是使用正则表达式对字符串进行查找,并将查找的结果作为数组返回,在实际开发中非常的有用,使用方法如下:  stringObj.match(rgExp)  其中stringObj是必选项.对其进行查找的 String 对象或字符串文字.  rgExp是必选项.为包含正则表达式模式和可用标志的正则表达式对象.也可以是包含正则表达式模式和可

Jquery中map函数的用法_jquery

很久没用map()这个函数了,由于最近看一篇react的文章,其中有谈到map()这个函数,于是就重新查了一些资料,发现map()函数可以用在不同的地方,下面小编总结具有内容分享给大家,也方便今后查找. 其实,本人一直很少用map()这个函数,因为最近看一篇React的文章,其实有谈及map()函数,于是自己也重新查了一些资料,发现map()函数也可以用在不同的地方: map()函数把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的Jquery对象 语法:.map(callback(i

简述Matlab中size()函数的用法_javascript技巧

size()函数用来获取矩阵的行数和列数. (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数. (2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c. (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数.其中r=size(A,1)该语句返回的时矩阵A的行数, c=si

Sql Server中Substring函数的用法实例解析_MsSql

SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef'

Sql Server中Substring函数的用法实例解析

SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef'

Excel2007中网格线的基本用法介绍

Excel2007中网格线的基本用法介绍 Excel2007中的网格线在编辑.打印操作中都会用到.下面讲解Excel2007软件中网格线的一些基本用法. 1.隐藏/显示网格线 通过"视图"选项卡菜单中的"网格线"复选框开关,你可以设置网格线在编辑表时候的显示与否,   2.打印输出网格线设置 Excel中默认的网格线在打印时候是不会输出的,除非你进行了单元格的边框设置.设置方法:"开始"选项卡菜单中"字体"栏的"边框

Python中的with...as用法介绍

  这篇文章主要介绍了Python中的with...as用法介绍,本文直接给出用法实例,需要的朋友可以参考下 这个语法是用来代替传统的try...finally语法的. 代码如下: with EXPRESSION [ as VARIABLE] WITH-BLOCK 基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法. 紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量.当with后面的