use*_*475 11 html php associative-array
我有以下表格:
<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>
Run Code Online (Sandbox Code Playgroud)
编辑
是否可以在提交之前将这两个值传递给一个关联数组?我想以这种形式传递它:
array('deptid'=>'deptname')
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我避免修改目标php文件的脚本(options.php)
谢谢.
Jar*_*ish 23
这是一个使用纯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>
Run Code Online (Sandbox Code Playgroud)
哪个会给你PHP:
$post_options = array(
'options' => array(
'deptid '=> '[that input element value]',
'deptname' => '[that input element value]'
)
);
Run Code Online (Sandbox Code Playgroud)
您可以随后(包括清理)访问,例如:
$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
}
Run Code Online (Sandbox Code Playgroud)
编辑
或者......你要引用deptid的input name属性,并用它来修改行一个部门的名字吗?这似乎表明这样的事情:
<?php
$deptid = 1;
$deptname = 'Department of Silly Walks';
?><input type="hidden" name="options[<?=$deptid?>]" value="<?=$deptname?>">
Run Code Online (Sandbox Code Playgroud)
哪个输出:
<input type="hidden" name="options[1]" value="Department of Silly Walks">
Run Code Online (Sandbox Code Playgroud)
这个问题是该$deptid值变为一个实际上没有直接命名或引用的值.我认为这可能有问题,因为从服务器到客户端和后面的值的抽象,所以我建议我在顶部而不是.这在实践中并没有多大区别,但它或多或少都是自我记录的.
注意,如果你想序列化一个部门列表,那就有点棘手了.例如,您可以尝试这样做:
<input type="text" name="options[][deptid]" id="deptid" />
<input type="text" name="options[][deptname]" id="deptname" />
Run Code Online (Sandbox Code Playgroud)
这会为每个人添加一个索引值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" />
Run Code Online (Sandbox Code Playgroud)
或者使用旧式的POSTBACK方法并使用PHP来计算$POST['options']并"手动"添加具有相同索引的新"输入"行.这是一个常见的陷阱,所以如果这是你在某些时候所追求的,你只需要考虑它.
$_POST已经是一个关联数组,我建议你不要把事情复杂化,因为$_POST已经保存了来自表单的数据.
$myassoc = $_POST;
print_r($myassoc);
Run Code Online (Sandbox Code Playgroud)
您将收到的关联数组在表单中的输入元素的name属性中组织并命名为相同(包括textarea)
其他见解
当我看到你的代码时,你想要将deptname数据放到deptidPHP服务器端代码中.你可以做的事情就是把它分配给钥匙deptid
$_POST['deptid'] = $_POST['deptname'];
$myassoc = $_POST;
print_r($myassoc);
Run Code Online (Sandbox Code Playgroud)