2016-10-21 77 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

因爲那樣會安排像這樣融資//滑鐵盧// theodore // 2015 //掌櫃,而不是我需要的東西 –

+0

'$ unitInvolvementValue。=「//」。 $ involved;'應該工作,儘管沒有理由將值賦給一個新的變量來回應它。你可以把'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()方法,因爲它僅增加值,而不是之間的分隔符在字符串的開頭或結尾。