【PHP基础知识点】extract处理$_POST和$_GET数组的作用
2017-12-29 14:00
561 查看
Question. 问题
form 表单通过 post 的方式能够向后台传输大量的数据,这些数据以数组的形式被封装在 $_POST 中,如:$_POST = array( 'id' => 1, 'code' => 'shorh', 'cat_id' => 55, 'name' => '防晒霜', 'brand_id' => 23, );
或者是 URL 通过 get 的方式传参,数据以数组的形式被封装在 $_GET 中,比如 URL 为
http://localhost/demo/extract/demo.php?a=1&b=2:
$_GET = array ( 'a' => 1, 'b' => 2 );
正常的我们解析这些数据,需要:
$id = $_POST['id']; $code = $_POST['code']; $cat_id = $_POST['cat_id']; $name = $_POST['name']; $brand_id = $_POST['id'];
这样的手工解析很麻烦,有没有什么方法能够处理这些数据呢?
extract() 方法可用于将数组展开,键名作为变量名,元素值为变量值,简单的说,就是能够直接将
$_POST和
$_GET中的变量解析出来,不需要我们手工赋值处理。
Solution. 解决
<?php error_reporting(0); print_r($_POST); echo "<br>"; extract($_POST); echo("\$username = ".$username."<br>"); echo("\$password = ".$password."<br>"); ?><!DOCTYPE html> < 4000 html> <head> <title>ExtractDemo</title> <meta charset="utf-8"> </head> <body> <!-- 测试代码 --> <form method="post"> <input type="text" name="username" value="<?php echo($username)?>"> <input type="password" name="password" value="<?php echo($password)?>"> <input type="submit" > <br>输入文字 </form> <!-- 说明 --> <h4>1. extract()有什么用?</h4> 它的主要作用是将数组展开,方便对数组的操作,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不用一一赋值。 <h4>2. extract()怎么用?</h4> 键名作为变量名,元素值为变量值 </body> </html>
对于 post上来的数据通过
extract($_POST);解析,我们就可以直接通过变量的方式使用了。
Extension. 扩展
extract() 函数还有两个扩展参数,用来指定在一些特殊情况下(比如变量名重名冲突了之类),怎么处理这些变量,这些在平时开发中较少遇到,大家作为了解:<?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 = $color<br>"; echo "\$size = $size<br>"; echo "\$shape = $shape<br>"; echo "\$wddx_size = $wddx_size<br>"; ?><!DOCTYPE html> <html> <head> <title>ExtractDemo</title> <meta charset="utf-8"> </head> <body> <!-- 说明 --> <div> <div style="font-weight: 700;">EXTR_OVERWRITE</div> <div >如果有冲突,覆盖已有的变量。</div> </div> <div> <div style="font-weight: 700;">EXTR_SKIP</div> <div >如果有冲突,不覆盖已有的变量。</div> </div> <div> <div style="font-weight: 700;">EXTR_PREFIX_SAME</div> <div >如果有冲突,在变量名前加上前缀 prefix 。</div> </div> <div> <div style="font-weight: 700;">EXTR_PREFIX_ALL</div> <div >给所有变量名加上前缀 prefix 。</div> </div> <div> <div style="font-weight: 700;">EXTR_PREFIX_INVALID</div> <div >仅在非法/数字的变量名前加上前缀 prefix 。</div> </div> <div> <div style="font-weight: 700;">EXTR_IF_EXISTS</div> <div >仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。</div> </div> <div> <div style="font-weight: 700;">EXTR_PREFIX_IF_EXISTS</div> <div >仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。</div> </div> <div> <div style="font-weight: 700;">EXTR_REFS</div> <div >将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值</div> </div> <div> <div style="font-weight: 700;">EXTR_PREFIX_INVALID</div> <div >仅在非法/数字的变量名前加上前缀 prefix 。</div> </div> </body> </html>
相关文章推荐
- PHP基础之POST与GET
- PHP基础知识 - get与post的区别
- PHP基础教程:PHP $_GET,$_POST,$…
- WEB安全基础-PHP中GET与POST实践
- PHP文件数据传输用jQuery-ajax进行浏览器->服务器->数据文件->服务器->浏览器的数据传输($_POST,$_GET,json_encode(数组数据回应),json数据解析)
- php中通过post和get传递数组的方法
- 【php网络 基础知识】详解get、post请求、文件上传
- php语法基础(二)- get和post请求
- PHP基础2数据类型新get知识点
- php基础05_get和post
- php 基础知识之$GET $POST
- PHP利用Curl、socket、file_get_contents POST数据
- [置顶] php超级预定数组( 类似javaWeb中域对象),函数,对象,进一步加深知识点
- PHP post get
- PHP基础语法之数组篇
- php中的_GET和_POST
- PHP中set_magic_quotes_runtime()和get_magic_quotes_gpc函数的作用
- php 利用socket发送HTTP请求(GET,POST)
- PHP CURD实现的中$_GET和$_POST用法的小问题
- PHP后台get和post带参请求的封装