首页 > 语言 > PHP > 正文

PHP中extract函数各种用法介绍

2024-09-04 11:48:35
字体:
来源:转载
供稿:网友

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

直接上代码,代码如下:

  1. <?php 
  2. $my_array = array("a" => "Cat","b" => "Dog""c" => "Horse"); 
  3. extract($my_array); 
  4. echo "$a = $a; $b = $b; $c = $c"
  5. ?>  
  6. //输出:$a = Cat; $b = Dog; $c = Horse  

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

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

form.html,代码如下:

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

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

action.php代码如下:

  1. <?php 
  2. extract($_POST); 
  3. //相当于$username = $_POST['username']; 
  4. //$password = $_POST['password']; 
  5. ?> 

数组操作相关例子,代码如下:

  1. <?php 
  2. /* 假定 $var_array 是 wddx_deserialize 返回的数组*/ 
  3. $size = "large"
  4. $var_array = array("color" => "blue"
  5. "size" => "medium"
  6. "shape" => "sphere"); 
  7. extract($var_array, EXTR_PREFIX_SAME, "wddx"); 
  8. echo "$color, $size, $shape, $wddx_sizen"
  9. ?> 
  10. //上例将输出: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

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

2.函数创建的变量名是数组中的关键字,变量的值是数组中对应的值;

3.两个可选参数:extract_type和prefix;

其中extract_type指定处理变量名冲突的方法,默认是EXTR_OVERWRITE,表示覆盖已有的变量,当extract_type的值为EXTR_PREFIX_ALL时,给所有创建的变量前加上前缀,前缀为prefix参数提供;

4.数组中元素的关键字必须是有效的变量名,否则将被跳过.

实例,array_extract.php,代码如下:

  1. <html> 
  2.     <head> 
  3.         <title>Test Array Extract</title> 
  4.     </head> 
  5.     <body> 
  6.         <?php 
  7.             $array = array('key1' => 'value1''key2' => 'value2''key3' => 'value3'); 
  8.             extract($array); 
  9.             echo 'Default:<br />'
  10.             echo "$key1 $key2 $key3<br />"
  11.              
  12.             //发生冲突时跳过一个元素 
  13.             $key1 = "abc"
  14.             extract($array, EXTR_SKIP); 
  15.             echo 'Skip:<br />'
  16.             echo "$key1 $key2 $key3<br />"
  17.  
  18.             //在所有变量名前加上由prefix参数提供的值 
  19.             extract($array, EXTR_PREFIX_ALL, 'my'); 
  20.             echo 'Prefix_All:<br />'
  21.             echo "$my_key1 $my_key2 $my_key3<br />"
  22.         ?> 
  23.     </body> 
  24. </html> 

是不是很方便呢?

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表