万户资源科技
万汇资源微信公众号

微信扫码有惊喜!

php extract数组转换成变量

chenjie 2015-12-28 技术

最近在看别人的代码时,碰到一堆变量不知道从哪里冒出来的,很是不解。    于是顺藤摸瓜,找到一个很强大的函数 extract()。

extract之意:释放,提取。就是把一个数组展开变成多个变量,键名作为变量名,键值作为变量值。例如:

<?php
$arr = array('id'=>'23','name'=>'jack','sex'=>'男');
extract($arr);
echo "$id,$name,$sex";//输出:23,jack,男
?>

extract有三个参数,extract(array,extract_rules,prefix)

array必选,extract_rules和prefix非必选
EXTR_OVERWRITE     如果有冲突,覆盖已有的变量。
EXTR_SKIP     如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME     如果有冲突,在变量名前加上前缀 prefix 。
EXTR_PREFIX_ALL     给所有变量名加上前缀 prefix 。
EXTR_PREFIX_INVALID     仅在非法/数字的变量名前加上前缀 prefix 。
EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。
EXTR_PREFIX_IF_EXISTS     仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS     将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。
如果没有指定 extract_type ,则被假定为 EXTR_OVERWRITE。

例如,

<?php
$name = '小明';
$arr = array('id'=>'23','name'=>'jack','sex'=>'男');
extract($arr,EXTR_PREFIX_SAME,'dbl');
echo "$id,$name,$sex,$dbl_name";//此时输出:23,小明,男,jack
?>
<?php
$arr = array('id'=>'23','name'=>'jack','sex'=>'男');
extract($arr,EXTR_PREFIX_ALL,'dbl');
echo "$dbl_id,$dbl_name,$dbl_sex";//此时输出:23,jack,男
?>

对于表单post过来的数据处理过后,用extract最好不过了

文章关键词
数组转换变量
extract用法
qq qq tel
服务热线:

134-1954-9128