2014-09-19 60 views
0

陣列I具有產生陣列POST之後輸入字段:保存輸入字段如在PHP

<tr> 
<td><input name="time['day'][]" value="1"></td> 
<td><input name="time['from][]" value="1"></td> 
<td><input name="time['to][]" value="1"></td> 
</tr> 

<tr> 
<td><input name="time['day'][]" value="2"></td> 
<td><input name="time['from][]" value="2"></td> 
<td><input name="time['to][]" value="2"></td> 
</tr> 

這將是返回:

陣列(

['day'] => Array 
    (
     [0] => 1 
     [1] => 2 
    ) 

['from] => Array 
    (
     [0] => 1 
     [1] => 2 
    ) 

['to] => Array 
    (
     [0] => 1 
     [1] => 2 
    ) 

但我想有這樣的:

陣列( [1] =>數組

(
     ['day'] => 1 
     ['from] => 1 
     ['to] => 1 
    ) 

[2] => Array 
    (
     ['day'] => 2 
     ['from] => 2 
     ['to] => 2 
    ) 

我得到這個如果我使用:

<tr> 
<td><input name="time[1]['day']" value="1"></td> 
<td><input name="time[1]['from]" value="1"></td> 
<td><input name="time[1]['to]" value="1"></td> 
</tr> 

<tr> 
<td><input name="time[2]['day']" value="2"></td> 
<td><input name="time[2]['from]" value="2"></td> 
<td><input name="time[2]['to]" value="2"></td> 
</tr> 

但問題來了。我想動態添加新行(使用JS),並且需要始終向第一個索引添加+1。

我怎麼能達到第二個結果,而不必手動設置第一個索引?

+0

從0開始,並檢查增量之前你有什麼。 – 2014-09-19 20:03:20

+0

數組是零索引的,你知道的。 – BenM 2014-09-19 20:03:34

+0

「我想動態添加新行(使用JS),並且需要始終向第一個索引添加+1」 - 這有什麼問題?也許我只是沒有得到它。 – Max 2014-09-19 20:04:15

回答

1

你可以把你的HTML這樣的 -

<tr> 
    <td><input name="time['day'][]" value="1"></td> 
    <td><input name="time['from'][]" value="1"></td> 
    <td><input name="time['to'][]" value="1"></td> 
</tr> 

<tr> 
    <td><input name="time['day'][]" value="2"></td> 
    <td><input name="time['from'][]" value="2"></td> 
    <td><input name="time['to'][]" value="2"></td> 
</tr> 

後你會得到服務器的值,可以說在GET陣列 -

<?php 
    $myfinalarray = array(); 
    foreach ($_GET['time'] as $key => $value) { 
     foreach ($value as $k => $v) { 
      $myfinalarray[$k][$key] = $v; 
     } 
    } 
    print_r($myfinalarray); 
?> 

輸出 -

Array 
(
    [0] => Array 
     (
      ['day'] => 1 
      ['from'] => 1 
      ['to'] => 1 
     ) 

    [1] => Array 
     (
      ['day'] => 2 
      ['from'] => 2 
      ['to'] => 2 
     ) 

) 
0

使用寫腳本的腳本比寫每個腳本要好。只是一個概念,你可以使用jquery寫入div以獲得更好的結果。

<script> 
function callInput(i) { 
    document.write("<tr><td><input name='time[" + i + "][day]' value='" + i + "'></td><td><input name='time[" + i + "][from]' value='" + i + "'></td><td><input name='time[" + i + "][to]' value='" + i + "'></td></tr>"); 
} 

function callRow(i) { 
    document.write("<table>"); 
    for(a = 0; a < i; a++) { 
    callInput(a); 
    } 
    document.write("</table>"); 
} 
</script> 

<body onload="callRow(4)"> 
相關問題