Php Foreach和$邮政

Php Foreach和$邮政,php,html,Php,Html,我有: 在PHP中,我希望: Table: id | one | two 但这不起作用。。。我不能对索引“一”和“二”使用POST,我必须对每个索引使用两个循环。可以用一个foreach或foreach中的foreach制作吗 打印($\u POST)返回我: if($_POST){ foreach($_POST['test'] as $post){ $new = new Table(); $new->setOne($post['one'

我有:

在PHP中,我希望:

 Table:
 id | one | two
但这不起作用。。。我不能对索引“一”和“二”使用POST,我必须对每个索引使用两个循环。可以用一个foreach或foreach中的foreach制作吗

打印($\u POST)返回我:

if($_POST){
   foreach($_POST['test'] as $post){
          $new = new Table();
          $new->setOne($post['one']);
          $new->setTwo($post['two']);
          $new->save(); 
   }
}
我会这样说:

[test] => Array ( [one] => Array ( [0] => a [1] => s [2] => d [3] => f [4] => g ) [two] => Array ( [0] => a [1] => s [2] => d [3] => f [4] => g ) ) ) 
if(!empty($\u POST)){
//现在$\u POST['test']是数组('one'=>array(),'two'=>array())
对于($i=0,$c=count($_POST['test']['one']);$i<$c;++$i){
$new=新表();
$new->setOne($_POST['test']['one'][$i]);
$new->setTwo($_POST['test']['two'][$i]);
$new->save();
}
}
我会这样做:

[test] => Array ( [one] => Array ( [0] => a [1] => s [2] => d [3] => f [4] => g ) [two] => Array ( [0] => a [1] => s [2] => d [3] => f [4] => g ) ) ) 
if(!empty($\u POST)){
//现在$\u POST['test']是数组('one'=>array(),'two'=>array())
对于($i=0,$c=count($_POST['test']['one']);$i<$c;++$i){
$new=新表();
$new->setOne($_POST['test']['one'][$i]);
$new->setTwo($_POST['test']['two'][$i]);
$new->save();
}
}

打印一个
var\u dump($\u POST)
到屏幕上,一切都会变得干净。如果你这样设置,去掉“一”和“二”的东西。循环你的$\u POST并根据你的$\u POST数组中的奇数和偶数(索引)映射。顺便说一句,给你的对象一个描述性名称(比如$table)这将提高代码的可读性,而不是$new不能确保设置了所需的所有
$\u POST
值,您应该改为使用。最后,我不知道您是否自己编写了表类,但是
setOne
setTwo
看起来像setter,而实际上它们是添加项的方法(对吗?)。也许您应该将名称更改为
addOne
addTwo
?将
var\u dump($\u POST)
打印到屏幕上,所有内容都将是干净的。如果您这样设置,请删除“一”和“二”内容。根据奇数和偶数(索引)循环您的$\u POST和映射在$\u POST数组中。顺便说一下,为对象指定一个描述性名称(例如$table)而不是$new,这样可以提高代码的可读性。另外,
if($\u POST)
不能确保设置了所需的所有
$\u POST
值,您应该改为使用。最后,我不知道您是否自己编写了表类,但是
setOne
setTwo
看起来像setter,而实际上它们是添加项的方法(对吗?)。也许你应该将名称更改为
addOne
addTwo
?我更新了代码。因为我没有访问新表()的权限,所以我只能假设。现在很清楚->保存()将插入数据库。我更新了代码。因为我没有访问新表()的权限,所以我只能假设。现在很清楚->保存()在数据库中执行插入操作。
if (!empty($_POST)) {
  // now $_POST['test'] is array('one' => array(), 'two' => array()
  for ($i = 0, $c = count($_POST['test']['one']); $i < $c; ++$i) {
    $new = new Table();
    $new->setOne($_POST['test']['one'][$i]);
    $new->setTwo($_POST['test']['two'][$i]);
    $new->save();
  }
}
if(is_array($_POST['test'])){ // also check that the user submitted an array
   foreach($_POST['test'] as $post){
          $new = new Table();
          foreach ($post['one'] as $item) { // $post['one'] and $post['two'] should have the same number of elements so looping through $post['one'] is sufficient to get entries for $post['two']
              $new->setOne($item);
              $new->setTwo($item);
              $new->save(); // each item is saved in the database now
          }
   }
}