我有一个关于 PHP 中的 foreach 循环的问题。出于某种原因,我似乎只能以这种方式回显最后一行,而我迷失了这个问题所在。每当我在 foreach 循环内部和 IF 语句外部的回显中检查 $onderdeeltje[1] 和 $selectedmodel 时,它都会完美地粘贴它们而没有任何问题。它还表明它们是相等且相同的,并且应该对 IF 语句做出反应。一旦我比较了 IF 语句中的两个,它只显示最后一个。每当我删除复选框 echo 并将其替换为 echo "test" 等任何内容时;它还显示我只测试一次。有人可以对此有所了解吗?我在同一页面中有多个(2 + 这个)这样的 foreach 循环,它们可以完美地工作,但只有这个似乎有问题。
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 equal 语句之前或内部修剪值,如下所示:
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 的支持解决了。