我有一个动态表单,除了数组之外我不知道输入的名称,我需要将它们相互关联。
例如,我的表单如下所示:
<input type="hidden" name="43897346[TitleID]" value="1" />
<input type="hidden" name="11122223[FieldID]" value="36" />
<input type="hidden" name="11122223[FieldPermission]" value="read" />
<input type="hidden" name="44455566[FieldID]" value="37" />
<input type="hidden" name="44455566[FieldPermission]" value="write" />
<input type="hidden" name="77676667[TitleID]" value="2" />
<input type="hidden" name="88899000[FieldID]" value="38" />
<input type="hidden" name="88899000[FieldPermission]" value="write" />
我想要做的是将每个输入与FieldID and FieldPermission
的数组关联到他上方的TitleID
,所以我的最终结果应如下所示:
Array
(
[1] => Array
(
[FieldID] => Array
(
[0] => 36
[1] => 37
)
[FieldPermission] => Array
(
[0] => read
[1] => write
)
)
[2] => Array
(
[FieldID] => Array
(
[0] => 38
)
[FieldPermission] => Array
(
[0] => write
)
)
)
注意:我不知道我的输入名称,我只知道数组名称。 我试着这样做:
$toInsert = array();
foreach($_POST as $k => $v){
$titleID = '';
if(array_key_exists('TitleID',$v))
$titleID = $v['TitleID'];
if(array_key_exists('FieldID',$v))
$toInsert[ $titleID ]['FieldID'][] = $v['FieldID'];
if(array_key_exists('FieldPermission',$v))
$toInsert[ $titleID ]['FieldPermission'][] = $v['FieldPermission'];
}
但没有成功......任何想法? 在此先感谢!!!
答案 0 :(得分:1)
您刚刚犯了一个小错误:每次循环时,您都会将$titleID
重置为空字符串。你希望值保持在那里直到你下次遇到'titleID'
值,所以只需取出那条线(或者在循环之前做一次,设置一个初始值&#34;以防万一&#34; ):
$toInsert = array();
$titleID = '';
foreach($_POST as $k => $v){
if(array_key_exists('TitleID',$v))
$titleID = $v['TitleID'];
if(array_key_exists('FieldID',$v))
$toInsert[ $titleID ]['FieldID'][] = $v['FieldID'];
if(array_key_exists('FieldPermission',$v))
$toInsert[ $titleID ]['FieldPermission'][] = $v['FieldPermission'];
}
在这里a live demo向您展示它的有效性。