php';s服务器端关联数组到html';s客户端

php';s服务器端关联数组到html';s客户端,php,html,arrays,forms,Php,Html,Arrays,Forms,在php中,我有如下数组 $var=array(); $var[0][0][num]='1'; $var[0][0][text]='2'; $var[0][1][num]='3'; $var[0][1][text]='4'; $var[1][0][num]='5'; $var[1][0][text]='6'; $var[1][1][num]='7'; $var[1][1][text]='8'; 我需要上下移动变量对[text]和[num]并将新的变量对附加到数组的末尾 在服务器端执行此操作很简

在php中,我有如下数组

$var=array();
$var[0][0][num]='1';
$var[0][0][text]='2';
$var[0][1][num]='3';
$var[0][1][text]='4';
$var[1][0][num]='5';
$var[1][0][text]='6';
$var[1][1][num]='7';
$var[1][1][text]='8';
我需要上下移动变量对
[text]
[num]
并将新的变量对附加到数组的末尾

在服务器端执行此操作很简单,但我希望允许在客户端执行这些操作

所以,它应该看起来像下面这样

<form>
<div>
<input name="var[0][0][num]" value="1">
<input name="var[0][0][text]" value="2">
<input name="var[0][1][num]" value="3">
<input name="var[0][1][text]" value="4">
</div>

<div>
<input name="var[1][0][num]" value="5">
<input name="var[1][0][text]" value="6">
<input name="var[1][1][num]" value="7">
<input name="var[1][1][text]" value="8">
</div>
</form>
之后的形式如下所示:

<form>
<div onlick="this.parentNode.appendChild(this.cloneNode(true))">
<input name="var[0][0][num]" value="1">
<input name="var[0][0][text]" value="2">
<input name="var[0][1][num]" value="3">
<input name="var[0][1][text]" value="4">
</div>

<div>
<input name="var[1][0][num]" value="5">
<input name="var[1][0][text]" value="6">
<input name="var[1][1][num]" value="7">
<input name="var[1][1][text]" value="8">
</div>

<div onlick="this.parentNode.appendChild(this.cloneNode(true))">
<input name="var[0][0][num]" value="1">
<input name="var[0][0][text]" value="2">
<input name="var[0][1][num]" value="3">
<input name="var[0][1][text]" value="4">
</div>

</form>

我不知道如何更改复制的div输入的名称。例如,复制和附加的div应该是

<div onlick="this.parentNode.appendChild(this.cloneNode(true))">
<input name="var[2][0][num]" value="1">
<input name="var[2][0][text]" value="2">
<input name="var[2][1][num]" value="3">
<input name="var[2][1][text]" value="4">
</div>

或者,当我把上面的div移到下面的div时,它们应该被重命名,看起来像

<div>
<input name="var[0][0][num]" value="5">
<input name="var[0][0][text]" value="6">
<input name="var[0][1][num]" value="7">
<input name="var[0][1][text]" value="8">
</div>

<div>
<input name="var[1][0][num]" value="1">
<input name="var[1][0][text]" value="2">
<input name="var[1][1][num]" value="3">
<input name="var[1][1][text]" value="4">
</div>


好的,我知道这个问题很复杂,可能看起来很愚蠢,所以我只需要猜测一下(至少=)

您在标记中没有提到jQuery,但这就是我要看的。具体来说,jQueryUI库运行在jQuery之上

jQuery是一个javascript库,它比经典javascript更高效(键入更少,代码更少)

请参阅jQueryUI可排序小部件

对于jQuery教程:


还有更多教程。

听起来像是javascript的工作,可能还有AJAX来更新对服务器的更改。另外,javascript库jQuery(也使用AJAX)将更加容易。如果需要保持命名不变,请不要移动dom元素。移动值。这将需要更多的工作,但要比每次移动时重建名称属性容易得多。@Marc B我很乐意,但也有可能,某些div将有不同数量的变量(不仅是
num
text
键)@EL这个问题仍然存在吗?如果没有,请对任何对您有帮助的答案进行投票,并在完成后选择正确的答案(以结束问题)。是的,这看起来很好,但我试图避免JQ。您能告诉我,这个JQUI是重命名输入名称还是保持输入名称不变并为其分配(交换)新值吗?您必须使用javascript或jQuery进行此操作,坦率地说,jQuery更容易掌握。恐怕我不知道你第二个问题的答案。
<div>
<input name="var[0][0][num]" value="5">
<input name="var[0][0][text]" value="6">
<input name="var[0][1][num]" value="7">
<input name="var[0][1][text]" value="8">
</div>

<div>
<input name="var[1][0][num]" value="1">
<input name="var[1][0][text]" value="2">
<input name="var[1][1][num]" value="3">
<input name="var[1][1][text]" value="4">
</div>