2013-04-11 149 views
0

我需要嵌套的一些帮助foreach在PHP中嵌套的foreach()

这是我的代码:

$program = $_POST['program']; 
$licence = $_POST['licence']; 
    foreach($program as $p){ 
     foreach($licence as $l){ 
mysql_query("INSERT INTO programs (pcname, program, licence) VALUES ('". $pcname ."', '". $p ."', '". $l ."')"); 

    } 
} 

这不工作,我知道是什么原因。但我找不到解决问题的方法。问题是,它正在经历foreach内部的所有值,然后是通过它们全部,再次为外部的下一个值foreach

这可能没有被很好地解释,但希望你能理解我正在努力实现的目标,并帮助我。

+0

你期望的行为,还是想? – Tim 2013-04-11 19:26:56

+0

$ program/$ license是一个数组吗?我想不是,因为$ _POST值是字符串。 – Voitcus 2013-04-11 19:27:03

+0

@Voitcus他们是数组,而不是字符串。 – Melloorr 2013-04-11 19:54:43

回答

2

假设你的两个数组在它们的元素之间有1:1映射,比方说。 5每个,那么你的嵌套循环将产生25个插入调用。您需要使用键从一个数组引用其他:

foreach($program as $key => $p) { 
    $l = $license[$key]; 
    mysql_query(...); 
} 

,请注意您是敞开的sql injection attacks

+0

这个工作就像一个魅力,完全按照我想要的那样工作,是的,我知道我很乐意接受攻击,但这只适用于本地使用,一旦它具备了所有功能,我就会添加这种有用的东西。再次感谢您的回答:) – Melloorr 2013-04-11 19:40:15

+0

$ l = array_shift(license);如果键不一样。 – AlucardTheRipper 2013-04-11 19:47:59

0

纠正我,如果我错了,但我相信你的问题会简单地将第一个for循环后,移动你的查询语句要解决......