不确定我选择的标题是否非常明确。如果没有,对不起。
我的问题是,我们是否有一个具有类似依赖输入的表单:
<form>
<input type='text' name='item-1'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
</form>
在这种情况下,子项与上述项直接关联。
现在,我们在此表单中添加了 2 个按钮。
第一个将添加(jQuery append)一个输入子项,在这种情况下它将是:
<input type='text' name='sub-item-3'/>
第二个按钮将添加(也是jQuery附加)一个带有自己的子项的所有新项。
所以我们最终可能会得到这样的东西:
<form>
<input type='text' name='item-1'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
<input type='text' name='sub-item-3'/>
<input type='text' name='item-2'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
</form>
如果我使用提交按钮,则数据的"依赖关系"不会通过。所以我最终得到了这样的东西:
array(
item-1 => random value A,
sub-item-1 => random value B,
sub-item-2 => random value C,
etc)
所以我的问题是我怎样才能最终得到一个转换数据依赖性的数组。例如:
array(
Value item 1 => array(
sub-item-1 => random value B,
sub-item-2 => random value C)
Value item 2 => array(
sub-item-1 => random value B))
etc
欣赏 anu 对表单的其他结构的反馈,或之后构建数据的方法。重要的是最终得到一个显示输入依赖性的数组。
希望它足够清楚,尽力而为。
首先,表单输入的 name 属性必须全部唯一。因此,您可以为每个
"父项"执行"子项-1-1",而不是每个"父项"的"子项-1",对于下一个"子项-2-1"。这里有一些代码可以采用这样的数组并将其重新组织成 2-D 数组(只需将您的 inputValues 与 $_POST 交换即可)
$inputValues = array(
'item-1'=>'parent 1',
'sub-item-1-1'=>'sub value 1-1',
'sub-item-1-2'=>'sub value 1-2',
'item-2'=>'parent 2',
'sub-item-2-1'=>'sub value 2-1'
);
$outputArray = array();
//create array of parents
foreach($inputValues AS $key=>$value){
if(is_numeric($key[5])){
array_push($outputArray,array('parent'=>$value));
}
}
//add children
foreach($inputValues AS $key=>$value){
if(is_numeric($key[9])){
$parentIndex = $key[9]-1;
$outputArray[$parentIndex][$key] = $value;
}
}
print_r($outputArray);
编辑:刚刚意识到,如果您的项目计数达到两位数,这将不起作用 - 如果是这样,请使用substring
从键名称中提取项目/父编号,而不是" $key[5]
"或" $key[9]
"