2016-10-21 2 views
0

У меня есть многомерные массивы, которые генерируются динамическими входными формами, которые пользователь может добавить, чтобы добавить такие вещи, как награды, рабочие места и образование.PHP - интервалы между массивами Итерации

Когда я собираю данные массива, чтобы нажать его на .csv, он печатает массивы, подобные этому FinanceWaterlooTheodore2015TreasurerTorontoGary2014.

Можно ли отметить точку, в которой контур массива заканчивается, поэтому он может быть более разборчивым и более похожим на этот FinanceWaterlooTheodore2015 // TreasurerTorontoGary2014?

$unitLevelInvolvement = $_POST["unitLevelInvolvement"]; 

$unitInvolvementValue = ""; 
$i; 
foreach($unitLevelInvolvement as $involvement) 
{ 
    $i++; 
    $unitInvolvementValue .= $involvement; 
} 
echo $unitInvolvementValue; 

    <div name="unitLevelInvolvement" id="unitLevelInvolvement"> 
     <input type="text" class="two-lines-textbox" name="unitLevelInvolvement[]" placeholder="Position/Committee" onBlur="this.placeholder='Position/Committee'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 
     <input type="text" class="two-lines-textbox" name="unitLevelInvolvement[]" id="oectaUnit_1" placeholder="Unit" onBlur="this.placeholder='Unit'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 

     <div class="clearFix"></div> 

     <input type="text" class="two-lines-textbox" name="unitLevelInvolvement[]" id="unitPresident_1" placeholder="Unit President" onBlur="this.placeholder='Unit President'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 
     <input type="date" class="two-lines-textbox" name="unitLevelInvolvement[]" id="unitYear_1" onKeyUp="checkPage3()" /> 
     <input type="button" value="+" onClick="addUnitInvolvement()" /> 
     </div> 
    </div><!-- end of unit-level-involvement div--> 
    <input type="submit" value="submit" /> 
</form><!--endForm--> 
+0

Не могли бы вы не просто сделать:. $ UnitInvolvementValue = "// $ участие"; –

+0

Нет, потому что это устроит, как, например, finance // waterloo // theodore // 2015 // казначей, а не то, что мне нужно –

+0

'$ unitInvolvementValue. =" // ". $ участие, 'должно работать, хотя нет причин для назначения значений новой переменной, чтобы ее эхо. Вы могли бы просто включить 'echo $ участия. "//"; 'в цикле foreach. – StephenWidom

ответ

1

Я понимаю, что вы пытаетесь поместить разделитель каждые 4 итерации (потому что у вас есть 4 входа).

Примечание, что этот ответ будет работать, только если у вас ровно 4 входа.

Вы могли бы попробовать что-то вроде этого:

$unitLevelInvolvement = $_POST["unitLevelInvolvement"]; 

$unitInvolvementValue = ""; 
$i = 0; 
foreach($unitLevelInvolvement as $involvement) 
    { 
     $unitInvolvementValue .= $involvement; 
     $i++; 
     if($i % 4 == 0){ 
      $unitInvolvementValue .= "//"; 
     } 
    } 
echo $unitInvolvementValue; 
+0

Если OP (или гнусный пользователь) добавляет/удаляет поле, его данные будут повреждены. OP должен создать новый массив для каждой группы в форме HTML. – StephenWidom

+0

@stephenWidom Можете ли вы помочь мне с этим или установить меня на правильном пути –

0

Прежде всего, вам нужно создать «группы», так как пока у вас их еще нет. Вы можете сделать это, создав многомерный массив с атрибутом name. Ваш HTML может выглядеть следующим образом:

<div name="unitLevelInvolvement" id="unitLevelInvolvement"> 
    <input type="text" class="two-lines-textbox" name="unitLevelInvolvement['group1'][]" placeholder="Position/Committee" onBlur="this.placeholder='Position/Committee'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 
    <input type="text" class="two-lines-textbox" name="unitLevelInvolvement['group1'][]" id="oectaUnit_1" placeholder="Unit" onBlur="this.placeholder='Unit'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 

    <div class="clearFix"></div> 

    <input type="text" class="two-lines-textbox" name="unitLevelInvolvement['group2'][]" id="unitPresident_1" placeholder="Unit President" onBlur="this.placeholder='Unit President'" onFocus="this.placeholder=''" onKeyUp="checkPage3()" /> 
    <input type="date" class="two-lines-textbox" name="unitLevelInvolvement['group2'][]" id="unitYear_1" onKeyUp="checkPage3()" /> 
    <input type="button" value="+" onClick="addUnitInvolvement()" /> 
    </div> 
</div><!-- end of unit-level-involvement div--> 

Вы можете итерацию по массиву, как это:

$unitInvolvementValue = array(); 
foreach($unitLevelInvolvement as $group) 
{ 
    $groupInvolvement = ""; 
    foreach($group as $involvement) 
    { 
     $groupInvolvement .= $involvement; 
    } 
    $unitInvolvementValue[] = $groupInvolvement; 
} 

echo implode("//", $unitInvolvementValue); 

Я использую implode() подход, поскольку он добавляет разделитель только между значениями и не в начале или в конце строки.

Смежные вопросы