2012-04-29 70 views
3

此HTML代码HTML表单传递两个deminsion数组PHP(特殊情况下,我认为)

<input name="Html_Array[][title]"> 
<input name="Html_Array[][amount]"> 

产生这个PHP阵列

[0] => Array 
      (
       [title] => Seilpendel für Tragsysteme 
      ) 

     [1] => Array 
      (
       [amount] => 2 
      )...So on 

会有什么HTML代码来生成以下PHP阵列

 [0] => Array 
      (
       [title] => Seilpendel für Tragsysteme 
       [amount] => 1 
      ) 

     [1] => Array 
      (
       [title] => Article Tiel 
       [amount] => 2 
      ) 

数组的大小是未知的,所以我们不能硬编码索引t o 0,1,2等

+1

您的HTML页面是否自动生成?你将不得不使用类似于 Virendra

+0

*“数组的大小是未知的,所以我们不能硬编码索引到0,1,2等”*那么你如何创建未知数量的输入元素? –

回答

2

保持索引每次添加表单字段的新组(使用jQuery的):

window.count = 0; 
$('#add-more-button').on('click', function() { 
$('<input name="html_array[' + window.count + '][title] />').appendTo('form:first'); 
$('<input name="html_array[' + window.count + '][amount] />').appendTo('form:first'); 
window.count++; 
}); 

你应该得到正确的结构。

编辑,如果你的意思是PHP:

// Assuming 0-indexed array 
foreach($my_array as $key => $value) { 
echo '<input name="html_array[' . $key . '][title]" />'; 
echo '<input name="html_array[' . $key . '][value]" />'; 
} 
+0

好的解决方案,但已经拥有它。需要HTML代替javascript或jQuery的答案 –

+0

@Wasim:这里的主要思想是使用'[0]','[1]'等而不是'[]'。 @tomhallam:这个想法是对的,但OP并没有表明他使用jQuery。我认为代码不会有任何帮助。 –

+0

是的,你需要有' .... '想。 – freshnode

1

我不认为你可以在HTML中创建精确的结构。只需将它们合并:

$result = array(); 
$current = array(); 

foreach($input as $item) { 
    $k = reset(keys($item)); 

    if(isset($current[$k])) { 
     $result[] = $current; 
     $current = array(); 
    } 

    $current[$item] = $item[$k]; 
} 
+0

我需要html代码,而不是php请 –

+0

@Wasim:* Ahem *“我不认为你可以在HTML中创建精确的结构。” – Ryan

+0

@Wasim那么你为什么要将你的问题标记为PHP? – Armatus

0

只是去除包裹第二维数组名

<input name="Html_Array[][title]"> 
<input name="Html_Array[][amount]"> 
+0

感谢有关问题的纠正。但问题是一些其他的问题 –

1
<input name="Html_Array[0][title]"> 
<input name="Html_Array[0][amount]"> 

<input name="Html_Array[1][title]"> 
<input name="Html_Array[1][amount]"> 

等引号...

循环可用于生成所需的整数序列。

相关问题