Php If语句在foreach循环中仅显示一次
我有一个关于PHP中foreach循环的问题。 出于某种原因,我似乎只得到最后一行回音的方式,我迷失在这个问题所在。每当我在foreach循环内部和IF语句外部的echo中检查$onderdeltje[1]和$selectedmodel时,它都会完美地粘贴它们,没有任何问题。它还表明它们是相等的,并且应该对IF语句作出反应。。当我比较两个IF语句时,它只显示最后一个。每当我删除echo复选框并将其替换为echo“test”之类的内容时;它也只显示了一次测试。有人能解释一下吗?在同一个页面中,我有多个(2+这个)foreach循环,就像这样,工作得很好,但只有这个循环似乎有问题Php If语句在foreach循环中仅显示一次,php,loops,if-statement,foreach,Php,Loops,If Statement,Foreach,我有一个关于PHP中foreach循环的问题。 出于某种原因,我似乎只得到最后一行回音的方式,我迷失在这个问题所在。每当我在foreach循环内部和IF语句外部的echo中检查$onderdeltje[1]和$selectedmodel时,它都会完美地粘贴它们,没有任何问题。它还表明它们是相等的,并且应该对IF语句作出反应。。当我比较两个IF语句时,它只显示最后一个。每当我删除echo复选框并将其替换为echo“test”之类的内容时;它也只显示了一次测试。有人能解释一下吗?在同一个页面中,我有
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>";
它仅显示:Reparatie oorluidspreker€46.00作为复选框
请帮帮我!:)提前谢谢
-------------------------------------------------------------
如何解决:
如果在每行粘贴
之类的内容,或者在我的例子中是重复表单复选框值的列表,则输出中可能存在不可见的隐藏空格
要解决此问题,只需在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>";
}
}
foreach($onderdelen作为$onderdel)
{
$onderdeeltje=爆炸(“,”,$onderdeel);
if(trim($onderdeltje[1])==$selectedmodel)
{
回显“$OnderDeltje[0]
”;
}
}
多亏了ZombieSpy的支持,问题得以解决。正如Marc B所说,您可能有换行符,所以请使用stru替换
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>";
echo”“;
$onderdelen=文件(“onderdelen.txt”);
foreach($onderdelen作为$OnDerdele)
{
$onderdeeltje=爆炸(“,”,$onderdeel);
如果(str_replace(“\n”,”,$onderdeltje[1])==$selectedmodel)
{
回显“$OnderDeltje[0]
”;
}
}
回声“;
file()
仍将在每行末尾保留换行符,因此实际上您要比较的是iphone3g\n
。最后一行可能没有换行符,所以您确实匹配了。请阅读我对ZombieSpy评论的评论。谢谢你的帮助@基文:请不要在标题中添加[solved]
。你已经接受了答案,这就是所需要的。我们可以从主屏幕上看到它已被解决。我明白了,注意到。这对通过谷歌搜索已解决的答案的人没有帮助吗?:)它显示页面标题,但不显示当前状态,这或多或少就是我这么做的原因。@Kevin G可能会将标题更改为与问题更相关的内容?比如“文件数组中的字符串不是它所期望的那样”之类的?基于Marc B的评论,我也尝试过这个方法,但它就是不想工作。我试了两种方法。。为了以防万一,替换OnDerDeltJe[1]和$selectedmodel,因为两者都来自列表。。但是不行。同样,它只显示最后一个:(奇怪的是,这个完全相同的处理在它正上方的foreach循环中工作,也使用分解的字符串拆分并从文本文件中读取,为什么这在这个循环中是个问题,而不是在之前的循环中?那个循环工作得很好。让我们了解一下我的意思:我在它上面有一个完全相同的代码块,用于获取基于select的模型。)从一个名为models.txt的文本文件中删除模型,这些模型的结构如下:modelname,brand如果你回音两边,它们看起来一样吗?其中是否有一个空格是邪恶的?尝试删除两个字符串中的所有空格
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>";