我创建了一个HTML表单,用户可以在其中输入其可用性(星期几)。表单有一个添加新用户的按钮,所以最后我会为用户提供多个DIV,因此我有两个维度USER_DOW[][]
的USER_DOW。
<div id="user1" class="user" >
<div class="name">
<label>Name</label>
<input type="text" name="USER_Name[]">
</div>
<div>
<label>Day of Week</label>
<select multiple id="USER_DOW" name="USER_DOW[][]" size='7'>
<option value="Mon">Monday</option>
<option value="Tue">Tuesday</option>
<option value="Wed">Wednesday</option>
<option value="Thu">Thursday</option>
<option value="Fri">Friday</option>
<option value="Sat">Saturday</option>
<option value="Sun">Sunday</option>
</select>
</div>
</div>
我在访问PHP
中的元素时遇到问题foreach($USER_Name as $a => $b){
echo $a+1;
echo $USER_Name[$a];
echo "Number of selected days for user " + count($USER_DOW);
foreach($USER_DOW as $c => $b){
echo $USER_DOW[$c][$a];
}
}
目前,如果我添加2个用户,一个选择Wed.&amp;太阳。而第二只Mon.,我得到的是两个用户的三天(计数)和第一个用户所有三个都打印(周三,周日,周一),而第二个没有。
有什么想法吗?我误解了数组中的键吗?
答案 0 :(得分:1)
表单的输入元素名称按书面形式传递,无需任何解释。
所以,在这个例子中:
/* FORM #1 */ test.php?txt[0]=One&txt[1]=Two&action=Test
/* FORM #2 */ test.php?txt[]=One&txt[]=Two&action=Test
/* FORM #3 */ test.php?txt[][]=One&txt[][]=Two&action=Test
生成的网址为:
$_GET
( rawurldecoded 为清晰起见)
当进程$_POST
/ Array
(
[txt] => Array
(
[0] => One
[1] => Two
)
[action] => Test
)
变量时,PHP会尝试解释它,所以在第一种和第二种形式中,结果是相同的:
Array
(
[txt] => Array
(
[0] => Array
(
[0] => One
)
[1] => Array
(
[0] => Two
)
)
[action] => Test
)
但是,在表格#3中,结果是:
<input type="text" name="txt[1][]" value="One">
<input type="text" name="txt[1][]" value="Two">
因为PHP增加了第一级密钥,但没有增加更深的密钥。
如果您希望增加更深的数组,则必须在表单中指定第一级键。 类似的东西:
<input type="text" name="txt[<?php echo $SomeVar; ?>][]" value="One">
<input type="text" name="txt[<?php echo $SomeVar; ?>][]" value="Two">
或者,如果代码生成,如:
<?php
$command='matlab -nodesktop -r "run emailToSpeech.m";';
exec ( $command );
?>
答案 1 :(得分:0)
<?php
var_dump($_POST);
function do_form($index) {
?>
<div id="user<?= $index ?>" class="user" >
<div class="name">
<label>Name</label>
<input type="text" name="USER_Name[<?= $index ?>]">
</div>
<div>
<label>Day of Week</label>
<select multiple id="USER_DOW" name="USER_DOW[<?= $index ?>][]" size='7'>
<option value="Mon">Monday</option>
<option value="Tue">Tuesday</option>
<option value="Wed">Wednesday</option>
<option value="Thu">Thursday</option>
<option value="Fri">Friday</option>
<option value="Sat">Saturday</option>
<option value="Sun">Sunday</option>
</select>
</div>
</div>
<?php
}
?>
<form method="POST">
<?php do_form(1); do_form(2); ?>
<input type="submit">
</form>
提交后的示例输出:
array (size=2)
'USER_Name' =>
array (size=2)
1 => string 'foo' (length=3)
2 => string 'bar' (length=3)
'USER_DOW' =>
array (size=2)
1 =>
array (size=1)
0 => string 'Mon' (length=3)
2 =>
array (size=2)
0 => string 'Mon' (length=3)
1 => string 'Tue' (length=3)