【PHP基础知识点】extract处理$_POST和$_GET数组的作用

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. 解决


error_reporting(0);
print_r($_POST);
echo "
"
; extract($_POST); echo("\$username = ".$username."
"
); echo("\$password = ".$password."
"
); ?>
<html> <head> <title>ExtractDemotitle>
<meta charset="utf-8"> head>
<body> <form method="post"> <input type="text" name="username" value=""> <input type="password" name="password" value=""> <input type="submit" > <br>输入文字 form> <h4>1. extract()有什么用?h4> 它的主要作用是将数组展开,方便对数组的操作,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不用一一赋值。 <h4>2. extract()怎么用?h4> 键名作为变量名,元素值为变量值 body> html>

对于 post上来的数据通过extract($_POST); 解析,我们就可以直接通过变量的方式使用了。

Extension. 扩展

extract() 函数还有两个扩展参数,用来指定在一些特殊情况下(比如变量名重名冲突了之类),怎么处理这些变量,这些在平时开发中较少遇到,大家作为了解:


/* 假定 $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
"
; echo "\$size = $size
"
; echo "\$shape = $shape
"
; echo "\$wddx_size = $wddx_size
"
; ?>
<html> <head> <title>ExtractDemotitle>
<meta charset="utf-8"> head> <body> <div> <div style="font-weight: 700;">EXTR_OVERWRITEdiv> <div >如果有冲突,覆盖已有的变量。div> div> <div> <div style="font-weight: 700;">EXTR_SKIPdiv> <div >如果有冲突,不覆盖已有的变量。div> div> <div> <div style="font-weight: 700;">EXTR_PREFIX_SAMEdiv> <div >如果有冲突,在变量名前加上前缀 prefix 。div> div> <div> <div style="font-weight: 700;">EXTR_PREFIX_ALLdiv> <div >给所有变量名加上前缀 prefix 。div> div> <div> <div style="font-weight: 700;">EXTR_PREFIX_INVALIDdiv> <div >仅在非法/数字的变量名前加上前缀 prefix 。div> div> <div> <div style="font-weight: 700;">EXTR_IF_EXISTSdiv> <div >仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。div> div> <div> <div style="font-weight: 700;">EXTR_PREFIX_IF_EXISTSdiv> <div >仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。div> div> <div> <div style="font-weight: 700;">EXTR_REFSdiv> <div >将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值div> div> <div> <div style="font-weight: 700;">EXTR_PREFIX_INVALIDdiv> <div >仅在非法/数字的变量名前加上前缀 prefix 。div> div> body> html>

你可能感兴趣的:(PHP-基础知识点)