我动态创建了一个数组,我想提取数组并将每个项放入自己的变量中。
这是我的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']是一个复选框值数组
答案 0 :(得分:1)
PHP中的变量不能以数字开头:
echo $1;
这是无效的,会引发错误。
您还使用了不正确的提取,因为您在可能是也可能不是数组的内容上使用它。我们无法保证$ _POST ['foo']是一个关联数组(并非它),这是唯一可用的数组类型提取。 extract使用关联数组中的键来创建新变量。
答案 1 :(得分:1)
$bar = $_POST['foo'];
extract($bar, EXTR_PREFIX_ALL, "bar_");
echo $bar_1;
前缀通过下划线字符自动与数组键分开。
您提取的变量名为$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)
在这里您可以看到类似的案例: