PHP - 仅发布数组索引输入字段的某些值?

时间:2017-06-29 21:44:38

标签: php

我有一个基于PHP的网页,其中包含许多输入字段。逻辑上,一些输入可以表示为相关“对象”的数组;特别是我有三个这样的对象数组 - 一个用于“受益人”,一个用于“儿童”,一个用于“视觉”。输入字段的基本格式如下:

<input name='object[index][property]' />

例如

<input type='text'  data-confirm='beneficiary0CityDisplay'  name='beneficiary[0][city]' class='required' />

发布数据时,我希望收到每个具有多个属性的对象数组;例如,具有城市,州等属性的四个“受益人”的阵列。这实际上对于上面提到的三个对象组中的两个有预期的效果;但是,“child”数组的所有对象只有两个属性。为了说明,我的受益人数组如下:

enter image description here

应该是这样的;每个“视觉”对象都有八个属性(是的,它们目前是空的,但这是预期的)。受益人数据也是如此。但是,只发布了子数据的两个属性:

enter image description here

我很困惑为什么会这样。不仅因为所有子输入字段似乎共享相同的语法/命名约定,受益人和视觉输入字段也是如此。

例如,这有效:

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

这可能很简单,但此刻我有点难过;任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您与姓名属性不一致: child[1]city vs child[1][state]

发布字段的正确语法,因此它们可用作$ _POST中的数组,方括号包装键使child[1][state]正确,而child[1]city则不正确。

另外值得注意的是,复选框仅在选中时发布。