Php Foreach和$邮政
我有: 在PHP中,我希望: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'
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
}
}
}