如何发布在PHP关联数组(How to POST an associative array in P

2019-07-17 14:54发布

我有以下形式:

<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)

谢谢。

Answer 1:

这里有一个方法,使用纯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 
}

编辑

或者......你要引用的deptidinput 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']和“手动”具有相同索引添加输入一个新的“行”。 这是一个常见的陷阱,所以你只要想一想,如果这是你在某一点后,在做什么。



Answer 2:

$_POST已经是一个关联数组我建议你不要因为事情超出了复杂的 $_POST已经拥有从表单中的数据来了

$myassoc = $_POST;
print_r($myassoc);

与关联数组,您将收到您的形式(包括文本域)的组织和命名的输入元素的name属性相同

其他见解

当我看到你的代码,你要把deptname数据deptid ,因为它达到了PHP的服务器端代码。 那么你可以用是做的事就是把它分配给关键deptid

$_POST['deptid'] = $_POST['deptname'];
$myassoc = $_POST;
print_r($myassoc);


Answer 3:

<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'];
    }
?>


Answer 4:

构建一个JS对象使用适当的结构,它转换成JSON JSON.stringify()张贴,然后做json_decode($_POST['data'],true)

你必须从JS对象完全相同的副本,以PHP关联的阵列。 下降的第二个参数true得到一个PHP对象。



Answer 5:

$_POST已经是一个关联数组。

您可以重建形式的数组,你向它分配从这个需要$_POST给一个变量

$myarray = $_POST;

现在$ myArray的是你所需要的。 这样做var_dump($myvar);



Answer 6:

你为什么想这么做? 但是,你可以通过这样的形式发送“阵列”:

<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']);
?>


Answer 7:

$deptid = $_POST['deptid'];
$array = array($$deptid => $_POST['deptname']);
print_r($array);


文章来源: How to POST an associative array in PHP