我创建了一个像这样的二维文本框数组:
<form name="form1" Method="POST" ACTION="dynamic_process.php">
<?php for( $i = 1; $i <= $userinput; $i++ )
{
echo '(X'.$i.' '; ?>
<input id="txtbox" name="txtbox[][x]" type="text" />
<?php echo ', Y'.$i.' '; ?>
<input id="txtbox" name="txtbox[][y]" type="text" />
<?php echo ', Z'.$i.' '; ?>
<input id="txtbox" name="txtbox[][z]" type="text" />
<?php echo ')<br>';
} ?>
<br>
<input type="hidden" name="MaxCoordinates" value="<?php echo $userinput?>">
<input type="submit" name="submit_coordinates" value="submit" />
</form>
我想首先遍历xyz坐标,然后在dynamic_process.php页面上打印出来。我很难理解如何引用数组中的索引。
textbox []的第一个索引是由用户输入动态决定的,第二个索引(其中包含x,y或z的索引)不是由用户输入决定的。
我尝试从dynamic_process.php引用文本框的尝试之一就是这样。
<?php
foreach ( $_POST['txtbox[]'] as $txtbox )
{
echo '<br>';
foreach ( txtbox[][] as $point)
echo ' '.$txtbox[]['X']. ', ';
echo ' '.$txtbox[]['Y']. ', ';
echo ' '.$txtbox[]['Z']. ', ';
}
}?>
但是在加载时我在页面上出现此错误:
致命错误:无法在第21行的C:\ myfolder \ dynamic_process.php中使用[]进行阅读
第21行是这样的:
foreach ( txtbox[][] as $point)
答案 0 :(得分:1)
这里有很多问题,要经过太多,所以以下只是“建议”尝试解决这个问题。在调试时,这已经过“测试”。
注意:为了便于阅读,我重命名了一些变量(例如),但每个人都有自己的偏好。
<form name="form1" method="POST" action="dynamic_processt.php">
<?php
// Added for testing as this is not specified in the supplied code
$user_input = 2;
// If you are going to use ID's, each id has to be unique,
// so I have just come up with "something" to make them different.
// Why do you even need id's?
for ($i = 1; $i <= $user_input; $i ++) {
// This can be refactored a lot as it is not beautiful.
echo '(X' . $i . ' '; ?>
<input id="text_box_1_<?= $i;?>" name="text_box[<?= $i;?>][x]" type="text"/>
<?php echo ', Y' . $i . ' '; ?>
<input id="text_box_2_<?= $i;?>" name="text_box[<?= $i;?>][y]" type="text"/>
<?php echo ', Z' . $i . ' '; ?>
<input id="text_box_3_<?= $i;?>" name="text_box[<?= $i;?>][z]" type="text"/>
<?php echo ')<br>';
} ?>
<br>
<input type="hidden" name="MaxCoordinates" value="<?php echo $user_input ?>">
<input type="submit" name="submit_coordinates" value="submit"/>
</form>
<?php
显示结果: 你有一个2D数组,所以First foreach将允许你访问第一级元素。
然后直接使用命名的x,y,z索引引用数组元素。 当你使用var_dump($ _ POST)时,它会显示你的数组的实际结构。
请注意,在$ _POST实例中,您有一个数组,但您只需要通过变量名称来引用它。
// Debug
var_dump($_POST); // What does the structure of $_POST Look like?
foreach ($_POST['text_box'] as $text_box) {
echo '<br>';
echo ' ' . $text_box['x'] . ', ';
echo ' ' . $text_box['y'] . ', ';
echo ' ' . $text_box['z'] . ', ';
} ?>
你可以做很多事情来使这个更好,但我会把它留给你。
使用var_dump()可以非常方便地查看正在发生的事情,在这种情况下,它与您期望的非常不同。始终确保您知道变量正在做什么!
询问您是否有任何问题。
答案 1 :(得分:0)
当您收到提交数据后,我认为您应该通过
访问它<?php
foreach ( $_POST['txtbox'] as $txtbox )
{
}?>
或者也许它可能会更好,如果在HTML中你没有使它成为txtbox [] [x]但成为txtbox [$ i] [x]它将变得更具可读性
祝你好运