我对PHP中的foreach循环有疑问。 出于某种原因,我似乎只是以这种方式回到了最后一条回路,我迷失在这个问题所在的地方。每当我在foreach循环内部和IF语句之外的echo中检查$ onderdeeltje [1]和$ selectedmodel时,它会完美地将它们全部粘贴而没有任何问题。它还表明它们是相同的,并且应该在IF语句上作出反应。一旦我比较两个内部IF语句,它只显示最后一个。每当我删除复选框echo并将其替换为echo“test”等任何内容;它也让我只测试一次。有人可以对此有所了解吗?我在同一页面中有多个(2 +这一个)foreach循环,它们完美地工作但只有这个似乎有bug。
echo "<form method='post' action='formpie.php'>";
$onderdelen = file("onderdelen.txt");
foreach ($onderdelen as $onderdeel)
{
$onderdeeltje = explode(",", $onderdeel);
if ($onderdeeltje[1] == $selectedmodel)
{
echo "<input type='checkbox' name='check_list[]' value='$onderdeeltje[0]'>$onderdeeltje[0]<br>";
}
}
echo "</form>";
$ selectedmodel将是:iPhone 3G和文本列表是这样的:
Reparatie touchscreen €41.50,iPhone 3G
Reparatie Wi-Fi-antenne €50.00,iPhone 3G
Reparatie trilmodule €40.00,iPhone 3G
Reparatie sim slot €70.50,iPhone 3G
Reparatie oorluidspreker €46.00,iPhone 3G
它只显示:Reparatie oorluidspreker€46.00作为复选框。
请帮帮我! :)提前致谢!
如何解决:
如果在每行使用<br>
之类的内容粘贴这些内容,或者在我的情况下是重复的表单复选框值列表,则输出中可能存在不可见的隐藏空格。
要解决此问题,您只需修改IF等语句之前或之内的值,如下所示:
foreach ($onderdelen as $onderdeel)
{
$onderdeeltje = explode(",", $onderdeel);
if (trim($onderdeeltje[1]) == $selectedmodel)
{
echo "<input type='checkbox' name='check_list[]' value='$onderdeeltje[0]'>$onderdeeltje[0]<br>";
}
}
感谢ZombieSpy的支持。
答案 0 :(得分:0)
正如Marc B所说,你可能有换行符,所以使用 str_replace
echo "<form method='post' action='formpie.php'>";
$onderdelen = file("onderdelen.txt");
foreach ($onderdelen as $onderdeel)
{
$onderdeeltje = explode(",", $onderdeel);
if (str_replace ("\n", "", $onderdeeltje[1]) == $selectedmodel)
{
echo "<input type='checkbox' name='check_list[]' value='$onderdeeltje[0]'>$onderdeeltje[0]<br>";
}
}
echo "</form>";