我有下面的代码生成我的表单在我的html页面
<input type="hidden" name="name[<? echo $productid; ?>]" value="<? echo $rows["id"];?>">
<select name="name<? echo $rows["id"]; ?>" >
<?
for($i = 0; $i <= sizeof($_SESSION['people']['name']); $i++){
echo "<option>";
echo $_SESSION['people']['name'][$i];
echo "</option>";
}
echo "</select>";
?>
然后,这个表单被提交到当前保存
的页面。var_dump($_POST);
和它打印出下面的
array(3) {
["name"]=> array(2) {
[2]=> string(1) "2"
[6]=> string(1) "6"
}
["name2"]=> string(12) "first person"
["name6"]=> string(15) "andother person"
}
然而,正如你所看到的,两个名字都被正确地发布了,但是它们没有正确地关联。
string(1)同时指向6和2。这些是我的产品编号,它们需要与名称配对。
你能让我知道我如何能够清理我的形式,并适当地与一个foreach循环,提取每个属性。即名称,以及id号(6,2…)
基本上,我想知道哪个名字与哪个产品id号相关联=> 2,6,等等…我希望名称保存为$name, id保存为$id。然后插入到表(name, id)值($name, $id)…但是,它应该在一个循环中获取所有的$names和$ids。所以第一次运行时,应该选择"first Person"并将其与"2"组在一起第二次运行时,它应该抓取"另一个人"并将其与6分组
对不起,英语不是我的第一语言。如果语法不好,请原谅。string(1)
位告诉您变量的类型和长度,而不是密钥。如果您的数组与它看起来的方式相关,则可以使用
foreach($_POST['name'] as $id) {
echo $_POST['name' . $id];
}
如果你打算在SQL调用中使用这些信息,请确保首先对输入进行消毒,否则你将容易受到SQL注入的影响。
编辑:如果您试图构造一个id => name类型的数组,您可以这样做:
$arr = array();
foreach($_POST['name'] as $id) {
$arr[$id] = $_POST['name' . $id];
}
print_r($arr);
//should print an array like ('2' => 'first person', '6' => 'another person')
String(1)
表示只有一个字符的字符串。我觉得这个结果还不错。不要在循环中使用sizeof()
-函数。将array-size赋值给var会更快,因为每次循环调用该函数。
或
$sOptions = '';
foreach($_SESSION['people']['name'] AS $i => $sName) {
$sOptions .= '<option value="'.$i.'">'.$sName.'</option>';
}
print '<select name="name'.$rows["id"].'">'.$sOptions.'</select>';
编辑:如果您将id ($i)赋给选项值,您将在post