好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP中extract函数各种用法介绍 - php函数

PHP中extract函数各种用法介绍

本文章详细的介绍了关于PHP中extract函数各种用法介绍,从把数据变成变量,post,get数据处理等有需要的同学可参考一下.

直接上代码,代码如下:

<?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.

1.适用范围:非数字索引的数组,数组中有键值对;

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> 

是不是很方便呢?

查看更多关于PHP中extract函数各种用法介绍 - php函数的详细内容...

  阅读:74次