PHP$\u POST和extract()除了可能的强制整型外,什么也不显示

PHP$\u POST和extract()除了可能的强制整型外,什么也不显示,php,post,extract,Php,Post,Extract,我有一个使用post的简单表单 <form id="quote_form" name="n_quote_form" method="post" action="quote"> 所以当我用这些数据填写表格时 此数据将传递到此脚本: function submit_quote_form(){ if (validate_form($_POST)){ 这反过来又调用了这个脚本:(我没有实现验证,直到我可以使用extract()从$\u POST提取表单数据,因为我不想在每次表

我有一个使用post的简单表单

<form id="quote_form" name="n_quote_form" method="post" action="quote">
所以当我用这些数据填写表格时

此数据将传递到此脚本:

function submit_quote_form(){

    if (validate_form($_POST)){
这反过来又调用了这个脚本:(我没有实现验证,直到我可以使用
extract()
$\u POST
提取表单数据,因为我不想在每次表单更改时手动键入键,或者如果我想在其他地方重用我的验证脚本(修改较少的话)

这个脚本正确地转储了$form_数据变量(
$\u POST
),因此我认为我们可以假设这不是传递参数的问题),但是提取变量
$var
似乎被转换为大小为11的int

function validate_form($form_data) {
    var_dump($form_data);
    $var = extract( $form_data, EXTR_OVERWRITE, "form_" );
    var_dump($var);
    echo "THIS IS MY POST VAR ==>";
    var_dump($_POST); // included for comparison
}
当I
var\u dump$form\u data
(将
$form\u data
$\u POST
进行比较,以确保它不是参数传递问题)

输出:

数组(11){[“n_name”]=>string(3)“bob”[“n_email”]=>string(12)”bob@bobs.com“[“n_email2”]=>字符串(12)”bob@bobs.com“[“n日”]=>字符串(1)“8”[“n月”=>字符串(8)“12月”[“n年”]=>字符串(4)“2015”[“n日”=>字符串(1)“9”[“n月”=>字符串(8)“12月”[“n年”=>字符串(4)”2015”[“n自行车需求”]=>string(14)“5辆自行车请”[“提交”]=>string(13)“获取我的报价”}int(11)这是我的帖子VAR=>array(11){[“n\u name”]=>string(3)“bob”[“n\u email”]=>string(12)”bob@bobs.com“[“n_email2”]=>字符串(12)”bob@bobs.com“[“从”]=>字符串(1)“8”[“从”]=>字符串(8)“12月”[“从”]=>字符串(4)“2015”[“从”]=>字符串(4)”到”]=>字符串(1)“9”[“n月到”]=>字符串(8)“12月到”[“n年到”]=>字符串(4)”2015”[“n月到”]=>字符串(14)“5辆自行车请”[“提交但”]=>字符串(13)“获取我的报价”}

我确实尝试使用以下方法将提取强制转换到数组:

$var = (array) extract( $_POST, EXTR_OVERWRITE, "form_" );
但这给了我:

数组(1){[0]=>int(11)}

var\u dump($var)

所以只将整数转换成长度为1的整数数组! 我可以像这里的其他帖子建议的那样使用单独的键,但我不希望特别是当这里的其他帖子接受了使用提取方法的答案时——这对我不起作用

问:为什么extract()没有像我/我们认为的那样工作


谢谢你的帮助

extract会将数组键和值添加到当前符号表中,因此在数组上使用extract后,可以使用数组键作为变量名。它将返回数组值

我得到的结果是:


蓝色、大号、球形、中号3

我建议阅读。听起来你并没有真正理解你的代码在做什么?谢谢Jon,你是对的,但我想我现在明白了,同时也明白了避免使用标志覆盖现有变量的部分。好吧,提取工作正常,只是我不明白它是如何工作的!
$var = (array) extract( $_POST, EXTR_OVERWRITE, "form_" );
$size = "large";
$var_array = array("color" => "blue",
               "size"  => "medium",
               "shape" => "sphere");
$var=extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";
echo $var;