不会转到 else/elseif 语句


Won't go to else/elseif statement

Php新手在这里,对本机PHP购物车进行故障排除。出于某种原因,此代码不会转到 elseif $item['type']>= 7。尝试使用其他方法,但仍然不行。这是带有条件语句的位。提前感谢伙计们。此外,您可以提供有关如何使此代码整洁的任何建议也非常受欢迎,10 +年前的一个人写了它。

我也回显了 $item['type'] 的值,它确实大于 7 的值,以防你们认为这就是问题所在。

<?php if($item['type']<7)
        { 
        //combination
            $countChilli = 0;
            $surcharge = 0.0;
            echo 'Combination (';
            echo $comboTypes[$item['type']][$item['rice']]['name'];
            echo ')';
            ?> </div>
            <div class="comboItems not">
            <?php foreach($item['items'] as $ingredient)
            {
                echo $ingredient['itemName'].'<br />';
                if($ingredient['id']==133){ $countChilli++; }
            }
            if($countChilli==1)
            {
                if(count($item['items'])==1)
                {
                    $surcharge=300;//CHANGEED FROM 2.00
                }
                elseif(count($item['items'])==2)
                {
                    $surcharge=150;
                }
                else
                {
                    $surcharge=100;
                }
            }
            elseif($countChilli>1)
            {
                $surcharge=200;
            }
        }
        elseif($item['type']>=7)
        { //sauce only
            echo 'testing';
            echo $comboTypes[$item['type']][$item['rice']]['name'];
            ?> </div>
            <div class="comboItems sauce">
            <?php foreach($item['items'] as $ingredient)
            {
                echo $ingredient['itemName'].'<br />';
            }
        }

更改

elseif($item['type']>=7)

else

您可能还想更改

if($item['type']<7)

if(intval($item['type'])<7)

更干净的代码实际上可以解决很多问题。另请参阅 PHP 比较运算符

<?php
if($item['type'] < 7)
{ 
    //combination
    $countChilli = 0;
    $surcharge = 0.0;
    echo 'Combination (';
    echo $comboTypes[$item['type']][$item['rice']]['name'];
    echo ')';
    echo '</div>
    <div class="comboItems not">';
    foreach($item['items'] as $ingredient)
    {
        echo $ingredient['itemName'].'<br />';
        if($ingredient['id'] === 133){ $countChilli++; }
    }
    if($countChilli === 1)
    {
        if(count($item['items']) === 1)
        {
            $surcharge = 300;//CHANGEED FROM 2.00
        }
        elseif(count($item['items']) === 2)
        {
            $surcharge = 150;
        }
        else
        {
            $surcharge = 100;
        }
    }
    elseif($countChilli > 1)
    {
        $surcharge = 200;
    }
}
else
{
    //sauce only
    echo 'testing';
    echo $comboTypes[$item['type']][$item['rice']]['name'];
    echo '</div>
    <div class="comboItems sauce">';
    foreach($item['items'] as $ingredient)
    {
        echo $ingredient['itemName'].'<br />';
    }
}
?>

你可以在那里投射:

if((int)$item['type']<7)

在大多数情况下,它更快。另外,您不需要为这种简单的转换进行函数调用,因为不需要指定基数。

另一个选项是"+"运算符:

if(+$item['type']<7)