我有一个基于PHP的网页,其中包含许多输入字段。逻辑上,一些输入可以表示为相关“对象”的数组;特别是我有三个这样的对象数组 - 一个用于“受益人”,一个用于“儿童”,一个用于“视觉”。输入字段的基本格式如下:
<input name='object[index][property]' />
例如
<input type='text' data-confirm='beneficiary0CityDisplay' name='beneficiary[0][city]' class='required' />
发布数据时,我希望收到每个具有多个属性的对象数组;例如,具有城市,州等属性的四个“受益人”的阵列。这实际上对于上面提到的三个对象组中的两个有预期的效果;但是,“child”数组的所有对象只有两个属性。为了说明,我的受益人数组如下:
应该是这样的;每个“视觉”对象都有八个属性(是的,它们目前是空的,但这是预期的)。受益人数据也是如此。但是,只发布了子数据的两个属性:
我很困惑为什么会这样。不仅因为所有子输入字段似乎共享相同的语法/命名约定,受益人和视觉输入字段也是如此。
例如,这有效:
<td><input type='text' data-confirm='vision0FirstDisplay' name='vision[0][firstName]'
placeholder='First' /> <input type='text'
data-confirm='vision0LastDisplay' name='vision[0][lastName]' placeholder='Last' /></td>
<td><input data-confirm='vision0SSNDisplay' maxlength=9 type='text' name='vision[0][ssn]' class='ssn' /></td>
<td><select data-confirm='vision0GenderDisplay' name='vision[0][gender]'>
<option value=''>...</option>
<option value='M'>Male</option>
<option value='F'>Female</option>
</select></td>
<td><select data-confirm='vision0MonthDisplay' name='vision[0][month]'>
<option value=''>Month</option>
<option value='01'>01</option>
<option value='02'>02</option>
<option value='03'>03</option>
<option value='04'>04</option>
<option value='05'>05</option>
<option value='06'>06</option>
<option value='07'>07</option>
<option value='08'>08</option>
<option value='09'>09</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select> <input type='text' data-confirm='vision0DayDisplay' name='vision[0][day]' class='day'
placeholder='Day' /> <input type='text' data-confirm='vision0YearDisplay' name='vision[0][year]'
class='year' placeholder='Yr.' /></td>
<td><select class='visionRelationship' data-confirm='vision0RelationshipDisplay' name='vision[0][relationship]'>
<option
value=''>Select</option>
<option value='Spouse'>Spouse
</option>
<option value='Dependent'>Dependent </option>
</select>
</td>
</tr>
<tr>
<td><input type='text' data-confirm='vision1FirstDisplay' name='vision[1][firstName]'
placeholder='First' /> <input type='text'
data-confirm='vision1LastDisplay' name='vision[1][lastName]' placeholder='Last' /></td>
<td><input data-confirm='vision1SSNDisplay' maxlength=9 type='text' name='vision[1][ssn]' class='ssn' /></td>
<td><select data-confirm='vision1GenderDisplay' name='vision[1][gender]'>
<option value=''>...</option>
<option value='M'>Male</option>
<option value='F'>Female</option>
</select></td>
<td><select data-confirm='vision1MonthDisplay' name='vision[1][month]'>
<option value=''>Month</option>
<option value='01'>01</option>
<option value='02'>02</option>
<option value='03'>03</option>
<option value='04'>04</option>
<option value='05'>05</option>
<option value='06'>06</option>
<option value='07'>07</option>
<option value='08'>08</option>
<option value='09'>09</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select> <input type='text' data-confirm='vision1DayDisplay' name='vision[1][day]' class='day'
placeholder='Day' /> <input type='text' data-confirm='vision1YearDisplay' name='vision[1][year]'
class='year' placeholder='Yr.' /></td>
这个(状态和zip字段除外),不是:
<td><input placeholder="First" type='text' data-confirm='child0FirstDisplay' name='child[0][firstName]' />
<input placeholder="Last" type='text' data-confirm='child0LastDisplay' name='child[0][lastName]' /></td>
<td><input type='text' class='ssn' maxlength=9 data-confirm='child0SSNDisplay' name='child[0][ssn]' /></td>
<td><select name="child[0][month]" data-confirm='child0MonthDisplay'>
<option value=''>Month</option>
<option value='01'>01</option>
<option value='02'>02</option>
<option value='03'>03</option>
<option value='04'>04</option>
<option value='05'>05</option>
<option value='06'>06</option>
<option value='07'>07</option>
<option value='08'>08</option>
<option value='09'>09</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select> <input placeholder='Day' type='text' data-confirm='child0DayDisplay' name='child[0][day]'
class='day' /> <input placeholder='Yr.' type='text'
name='child[0][year]' data-confirm='child0YearDisplay' class='year' /></td>
<td><select data-confirm='child0GenderDisplay' name='child[0][gender]'>
<option value=''>...</option>
<option value='M'>Male</option>
<option value='F'>Female</option>
</select></td>
<td><input type='checkbox' data-confirm='child0HandicapDisplay' name='child[0][isHandicap]' /> Handicap <input
type='checkbox' data-confirm='child0StudentDisplay' name='child[0][isStudent]' /> Student <input
type='checkbox' data-confirm='child0FosterDisplay' name='child[0][isFoster]' /> Foster <input
type='checkbox' data-confirm='child0StepDisplay' name='child[0][isStep]' /> Step-Child</td>
<td>Check if your <em>child</em> has a different address than yours.
<input type='checkbox' class='childAddressCheckbox'
name='child[0]diffAddress' />
<div class='childAddressContainer'>
<input type='text' data-confirm='child0StreetDisplay' name='child[0]address'
placeholder='Street Address' /> <input type='text'
name='child[0]city' data-confirm='child0CityDisplay' placeholder='City' /> <select
id='child[0][state]' data-confirm='child0StateDisplay' name="child[0][state]">
/// STATES HERE ///
</select> <input type='text' name='child[0][zip]' class='zip' />
</div>
</td>
</tr>
<tr>
<td><input placeholder="First" type='text' data-confirm='child1FirstDisplay' name='child[1][firstName]' />
<input placeholder="Last" type='text' data-confirm='child1LastDisplay' name='child[1][lastName]' /></td>
<td><input type='text' maxlength=9 class='ssn' data-confirm='child1SSNDisplay' name='child[1][ssn]' /></td>
<td><select name="child[1][month]" data-confirm='child1MonthDisplay' >
<option value=''>Month</option>
<option value='01'>01</option>
<option value='02'>02</option>
<option value='03'>03</option>
<option value='04'>04</option>
<option value='05'>05</option>
<option value='06'>06</option>
<option value='07'>07</option>
<option value='08'>08</option>
<option value='09'>09</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select> <input placeholder='Day' type='text' data-confirm='child1DayDisplay' name='child[1][day]'
class='day' /> <input placeholder='Yr.' type='text'
name='child[1][year]' data-confirm='child1YearDisplay' class='year' /></td>
<td><select data-confirm='child1GenderDisplay' name='child[1][gender]'>
<option value=''>...</option>
<option value='M'>Male</option>
<option value='F'>Female</option>
</select></td>
<td><input type='checkbox' data-confirm='child1HandicapDisplay' name='child[1][isHandicap]' /> Handicap <input
type='checkbox' data-confirm='child1StudentDisplay' name='child[1][isStudent]' /> Student <input
type='checkbox' data-confirm='child1FosterDisplay' name='child[1][isFoster]' /> Foster <input
type='checkbox' data-confirm='child1StepDisplay' name='child[1][isStep]' /> Step-Child</td>
<td>Check if your <em>child</em> has a different address than yours.
<input type='checkbox' class='childAddressCheckbox'
name='child[1]diffAddress' />
<div class='childAddressContainer'>
<input type='text' data-confirm='child1StreetDisplay' name='child[1]address'
placeholder='Street Address' /> <input type='text'
name='child[1]city' data-confirm='child1CityDisplay' placeholder='City' /> <select
id='child[1][state]' data-confirm='child1StateDisplay' name="child[1][state]">
/// STATES HERE ///
</select> <input type='text' name='child[1][zip]' class='zip' />
</div>
</td>
</tr>
这可能很简单,但此刻我有点难过;任何建议将不胜感激。
答案 0 :(得分:1)
您与姓名属性不一致:
child[1]city
vs child[1][state]
发布字段的正确语法,因此它们可用作$ _POST中的数组,方括号包装键使child[1][state]
正确,而child[1]city
则不正确。
另外值得注意的是,复选框仅在选中时发布。