【问题标题】:If else statement foreach loopif else 语句 foreach 循环
【发布时间】:2023-09-18 19:47:01
【问题描述】:

我有一个 foreach 循环,我想在其中添加一个 if else 语句...

这让我发疯了,所以非常欢迎任何帮助:)

这是代码:

<?php
if(isset($_POST['wiel_submit']) && $_POST['wiel_submit'] == "Zoek")
{
    echo "\t\t\t\t\t<h2>".$stockselection."</h2>
\t\t\t\t\t<br />\n";
    $type = split("//", $_POST['wiel_type']);
?>
                    <ul class="wheels">
<?php
    $velgen = $wielclass->getWielenInformatie($_POST['wiel_merk'], $_POST['wiel_model'], $type[0], $_POST['wiel_inch']);
    $first = true;
    $vorigvelg = -1;
    $warningEmitted = false;
    foreach($velgen as $velg)
    {
        if($velg[11] === "IA" && !$warningEmitted && $velg[2] == "086" || $velg[2] == "251" || $velg[2] == "250" || $velg[2] == "249" || $velg[2] == "220" || $velg[2] == "217" || $velg[2] == "197" || $velg[2] == "182" || $velg[2] == "181" || $velg[2] == "180" || $velg[2] == "142" || $velg[2] == "141" || $velg[2] == "140" || $velg[2] == "139" || $velg[2] == "138" || $velg[2] == "137" || $velg[2] == "136" || $velg[2] == "135" || $velg[2] == "134" || $velg[2] == "132" || $velg[2] == "131" || $velg[2] == "130" || $velg[2] == "129" || $velg[2] == "128" || $velg[2] == "127" || $velg[2] == "126" || $velg[2] == "097" || $velg[2] == "096" || $velg[2] == "094"  || $velg[2] == "093" || $velg[2] == "092" || $velg[2] == "090" || $velg[2] == "122" || $velg[2] == "121" || $velg[2] == "120" || $velg[2] == "114" || $velg[2] == "112" || $velg[2] == "111" || $velg[2] == "109" || $velg[2] == "104" || $velg[2] == "103" || $velg[2] == "102" || $velg[2] == "099" || $velg[2] == "098" || $velg[2] == "123" || $velg[2] == "124" || $velg[2] == "125" || $velg[2] == "133" || $velg[2] == "071" || $velg[2] == "075" || $velg[2] == "084" || $velg[2] == "113" || $velg[2] == "108" || $velg[2] == "089" || $velg[2] == "073" || $velg[2] == "072" || $velg[2] == "101" || $velg[2] == "088")
        {

?>
                        <li><span class="title">Foto <?php echo $velg[2]; ?></span>
                            <a href="/portfolio/inter-action-<?php echo $velg[2]; ?>" class="preview" title="Fotonummer: <?php echo $velg[2]; ?>">
                                <img src="/wp-content/uploads/inter-action-<?php echo $velg[2]; ?>.jpg" alt="Fotonummer: <?php echo $velg[2]; ?>" class="wheelImg"/>
                            </a>
                            </span>
                        </li>
<?php
            $vorigvelg = $velg[2];
        }
        else
        {
            echo "Niets gevonden!";
            $warningEmitted = true;
        }

    }
?>
                    </ul>


<?php
}
?>

我想要完成的是,当找到“IA”并匹配某个数字时,会用图像回显列表。

当找不到“IA”时,回显“Nothing Found”一次。

此时,当找到“IA”以及未找到“IA”时,他会显示“Nothing Found”。而且因为它在一个 foreach 中,所以它会显示多次。

我几乎尝试了所有方法,但它正在杀死我...

有谁知道我怎样才能做到这一点?

谢谢

【问题讨论】:

  • 那个 if 语句很奇怪,有 AND 和 OR 没有额外的括号?
  • 你的意思是 if($velg[11] === "IA" && !$warningEmitted && ($velg[2] == "086" || $velg[2] == " 251"...))?

标签: php if-statement foreach


【解决方案1】:

if 语句必须在每个 || 中包含所有参数

if($velg[11] === "IA" && !$warningEmitted && $velg[2] == "086" || $velg[11] === "IA" && !$warningEmitted && $velg[2] == "086" $velg[2] == "251" || $velg[11] === "IA" && !$warningEmitted && $velg[2] == "086" $velg[2] == "250" 
{

【讨论】:

    【解决方案2】:

    您的代码确实不……理想。

    我认为你的问题是&amp;&amp;|| 绑定得更近,从而改变了if 的条件。

    我建议将其更改为:

    $allowed = array(
        "086", "251", "250",
        "249", ...
    );
    if (
        ($velg[11] === "IA") &&
        (!$warningEmitted) &&
        (in_array($velg[2], $allowed))
    )
    {
       ... snip ...
    }
    else
    {
       ... snip ...
    }
    

    这应该可以解决您的问题并且使其更具可读性。

    【讨论】:

      【解决方案3】:

      更好的在数组中使用:

      $values = array("086", "251", "250", "249", "220", "217", "197", "182", "181", "180", "142", "141", "140", "139", "138", "137", "136", "135", "134", "132", "131", "130", "129", "128", "127", "126", "097", "096", "094", "093", "092", "090", "122", "121", "120", "114", "112", "111", "109", "104", "103", "102", "099", "098", "123", "124", "125", "133", "071", "075", "084", "113", "108", "089", "073", "072", "101", "088");
      if ($velg[11] === "IA" && !$warningEmitted && in_array($velg[2], $values)) {
          // statement
      } else {
         $warningEmitted = true;
      }
      

      【讨论】: