実現したいこと
input=textをjsで動的に増減させ、その値を多次元配列の形にして$_POSTしたいです。
該当のソースコード
- test3.php
PHP
1<form action="test-check3.php" method="post" accept-charset="utf-8"> 2<ul class="addInput"> 3 <li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li> 4 <li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li> 5</ul> 6<ul class="buttonset"> 7 <li><span class="add">ADD</span></li> 8 <li><span class="remove">REMOVE<strong></strong></span></li> 9</ul> 10<input type="submit"> 11</form> 12 13<!--jQuery本体--> 14<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 15<!--メニュー追加--> 16<script type="text/javascript"> 17$(function(){ 18 //「ADD」を押したら増やす 19 $('.add').click(function(){ 20 $('.addInput').append('<li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li>'); 21 }); 22 //「REMOVE」を押したら減らす 23 $('.remove').click(function(){ 24 $('.addInput li:last-child').remove(); 25 }); 26}); 27</script>
- test-check3.php
PHP
1<?php 2//変数にする 3$name = $_POST["name"]; 4var_dump($name); 5$tel = $_POST["tel"]; 6var_dump($tel); 7?>
前提
現在このような配列の形で値を受け取っているのですが、
array(2) {
[0]=> string(13) "メニュー1"
[1]=> string(13) "メニュー2"
}
array(2) {
[0]=> string(4) "3000"
[1]=> string(4) "5000"
}
このような多次元配列の形で受け取りたいです。
array(2) {
[0]=>array(2) {[0]=>string(13) "メニュー1"[1]=>string(4) "3000"}
[1]=>array(2) {[0]=>string(13) "メニュー2"[1]=>string(4) "5000"}
}
試したこと
(1)
js部分を一旦コメントアウトして
- test3.php
PHP
1<li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li> 2<li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li>
の部分を
PHP
1<li><input type="text" name="tab[0][0]" /><input type="text" name="tab[0][1]" /></li> 2<li><input type="text" name="tab[1][0]" /><input type="text" name="tab[1][1]" /></li>
のように変更し、$_POSTすると
PHP
1array(2) { 2[0]=> array(2) { [0]=> string(13) "メニュー1" [1]=> string(4) "3000" } 3[1]=> array(2) { [0]=> string(13) "メニュー2" [1]=> string(4) "1000" } 4}
と受け取る事ができたのですが、input=textをjsを動的に増減させる部分の設定方法がわかりません。
(2)
- test3.php
PHP
1for ($i = 0 ; $i < count(); $i++){ 2<li><input type="text" name="tab[$i][0]" /><input type="text" name="tab[$i][1]" /></li> 3}
のようにforを使って$i
を変化させるのか?とも考えたのですがその場合、
- $iの上限部分
count()
には何を設定すれば良いのでしょうか? - jsの
$('.addInput').append('<li><input type="text" name="name[]" /><input type="text" name="tel[]" /></li>');
部分はどのように変えれば良いでしょうか? - js内にPHPの
$i
を記述する方法
アドバイスを頂きたいです。よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/14 08:57
2023/02/14 11:31
2023/02/14 15:29
2023/02/15 00:37
2023/02/18 04:06