使用extract()PHP的问题

时间:2014-02-06 03:26:48

标签: php arrays extract

我动态创建了一个数组,我想提取数组并将每个项放入自己的变量中。

这是我的PHP:

$bar = $_POST['foo'];
extract($bar);
echo $1;

foo是我制作的表格中的一个数组。

每当我运行脚本时,我都会收到此错误:

Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '$' in /Application/...

当我将代码更改为:

$bar = $_POST['foo'];
extract($bar, EXTR_PREFIX_ALL, "bar_");
echo $bar_1;

我得到未定义的变量错误。

请帮帮我。

更新

我的第一个代码是信息性的,另一个人可能会遇到这个问题而不知道什么是错的。第二段代码是我的实际代码。

M的意图是将每个数组项输入到mysql表的不同字段中。我还没有编写完整的代码,因为这个extract()似乎没有用。

更新2:

$ _ POST ['foo']是一个复选框值数组

4 个答案:

答案 0 :(得分:1)

PHP中的变量不能以数字开头:

echo $1;

这是无效的,会引发错误。

您还使用了不正确的提取,因为您在可能是也可能不是数组的内容上使用它。我们无法保证$ _POST ['foo']是一个关联数组(并非它),这是唯一可用的数组类型提取。 extract使用关联数组中的键来创建新变量。

答案 1 :(得分:1)

$bar = $_POST['foo'];
extract($bar, EXTR_PREFIX_ALL, "bar_");
echo $bar_1;

来自http://php.net/extract

  

前缀通过下划线字符自动与数组键分开。

您提取的变量名为$bar__1两个下划线)。

但请回答所有回答的问题,“不要对不受信任的数据使用extract()。”

这是非常不安全的 你不应该这样做

答案 2 :(得分:0)

foreach($_POST['foo'] as $key=>$value) {
    ${"itemnumber".(string)$key} = $value;
}

现在您可以访问$ itemnumber2 --->等于位置2

中的数组项 编辑:我刚刚在writecodeonline.com上测试了它的工作原理:

$arr = array('one', 'two');

foreach($arr as $key=>$value) {
    ${"itemnumber".(string)$key} = $value;
}

echo $itemnumber1; //echoes: two

答案 3 :(得分:0)

在这里您可以看到类似的案例:

http://us2.php.net/manual/en/function.extract.php#60946