我有以下形式:
<form action="options.php" method="post">
<input type="text" name="deptid" id="deptid" />
<input type="text" name="deptname" id="deptname" />
<input type="submit" name="submit" id="submit" value="save" />
</form>
编辑
是否有可能在两个值传递到一个关联数组前提交? 我想它通过这种形式:
array('deptid'=>'deptname')
我需要这个,因为我避免修改目标php文件的脚本(options.php)
谢谢。
这里有一个方法,使用纯HTML是让你几乎正是你想要的,只有使用HTML:
<form action="options.php" method="post">
<input type="text" name="options[deptid]" id="deptid" />
<input type="text" name="options[deptname]" id="deptname" />
<input type="submit" name="submit" id="submit" value="save" />
</form>
这将使你在PHP中:
$post_options = array(
'options' => array(
'deptid '=> '[that input element value]',
'deptname' => '[that input element value]'
)
);
然后你就可以( 包括消毒 )访问像这样的:
$post_options = array('options');
if (is_numeric($post_options['deptid'] && $post_options['deptid'] > 0) {
// Do whatever
}
if (is_string($post_options['deptname'] && strlen($post_options['deptname'] > 2)) {
// Do whatever
}
编辑
或者......你要引用的deptid
中input name
属性,并用它来修改行一个部门的名字吗? 这似乎表明这样的事情:
<?php
$deptid = 1;
$deptname = 'Department of Silly Walks';
?><input type="hidden" name="options[<?=$deptid?>]" value="<?=$deptname?>">
其输出:
<input type="hidden" name="options[1]" value="Department of Silly Walks">
http://codepad.org/DtgoZGe7
这里的问题是, $deptid
值成为实际上并不是直接命名或参考价值。 我认为这是可能有问题的实施,由于这种抽象从服务器到客户端和背部的价值,所以我会建议什么,我都不得不代替。 它没有太多实际的差别,但它或多或少的自我记录。
请注意,如果你想序列化部门的名单,这是一个有点麻烦。 您可能,例如,试试这个:
<input type="text" name="options[][deptid]" id="deptid" />
<input type="text" name="options[][deptname]" id="deptname" />
这会为每添加一个索引值input
。 但是......他们不会直接关联。 所以,你会得到,每个键代替,两个零索引的数组。
我会建议在这种情况下是使用JavaScript来添加每一个新部门的input
元素,所以你可以给每个有这样的:
<input type="text" name="options[0][deptid]" id="deptid" />
<input type="text" name="options[0][deptname]" id="deptname" />
<br/>
<input type="text" name="options[1][deptid]" id="deptid" />
<input type="text" name="options[1][deptname]" id="deptname" />
<br/>
<input type="text" name="options[2][deptid]" id="deptid" />
<input type="text" name="options[2][deptname]" id="deptname" />
<br/>
<input type="text" name="options[3][deptid]" id="deptid" />
<input type="text" name="options[3][deptname]" id="deptname" />
还是做老派回传方法和使用PHP来算$POST['options']
和“手动”具有相同索引添加输入一个新的“行”。 这是一个常见的陷阱,所以你只要想一想,如果这是你在某一点后,在做什么。
$_POST
已经是一个关联数组 , 我建议你不要因为事情超出了复杂的 $_POST
已经拥有从表单中的数据来了 。
$myassoc = $_POST;
print_r($myassoc);
与关联数组,您将收到您的形式(包括文本域)的组织和命名的输入元素的name属性相同
其他见解
当我看到你的代码,你要把deptname
数据deptid
,因为它达到了PHP的服务器端代码。 那么你可以用是做的事就是把它分配给关键deptid
$_POST['deptid'] = $_POST['deptname'];
$myassoc = $_POST;
print_r($myassoc);
<form method="post">
<input type="text" name="formdata['deptid']" />
<input type="text" name="formdata['deptname']" />
<input type="submit" />
</form>
<?php
if(isset($_POST['formdata']))
{
$deptid = $_POST['formdata']['deptid'];
$deptname = $_POST['formdata']['deptname'];
}
?>
构建一个JS对象使用适当的结构,它转换成JSON JSON.stringify()
张贴,然后做json_decode($_POST['data'],true)
。
你必须从JS对象完全相同的副本,以PHP关联的阵列。 下降的第二个参数true
得到一个PHP对象。
$_POST
已经是一个关联数组。
您可以重建形式的数组,你向它分配从这个需要$_POST
给一个变量
$myarray = $_POST;
现在$ myArray的是你所需要的。 这样做var_dump($myvar);
。
你为什么想这么做? 但是,你可以通过这样的形式发送“阵列”:
<form method="post">
<input type="text" name="textboxes[]" />
<input type="text" name="textboxes[]" />
<input type="submit" />
</form>
<?php
if(isset($_POST['textboxes']))
var_dump($_POST['textboxes']);
?>
$deptid = $_POST['deptid'];
$array = array($$deptid => $_POST['deptname']);
print_r($array);