1

我已经用 else if 语句编写了一个代码,但它并没有完全按照我的意愿工作。

代码:

<?php
if($ids_fetch["s_type"]=="Y")
{
    echo "Yearly";
}
else if($ids_fetch["s_type"]=="M")
{
    echo "Monthly";
}
else if($ids_fetch["s_type"]=="Y" && $ids_fetch["register"]=="R")
{
    echo "Ref-Yearly";
}
else if($ids_fetch["s_type"]=="M" && $ids_fetch["register"]=="R")
{
    echo "Ref-Monthly";
}
else
{
    echo "Free";
}
  ?>

它唯一的 echo 1,2,5 语句,但不是 3,4 。如果我删除了 1 和 2nd 语句,那么它可以完美运行。

4

3 回答 3

1

Y如果或将出现,您的第一个和第二个语句将始终为真M,并且脚本不会进一步检查以后的语句,因此如果您想在语句中使用两个变量,则需要在两种情况下都使用

if(($ids_fetch["s_type"]=="Y") && ($ids_fetch["register"] != "R"))

第二个应该是一样的

else if($ids_fetch["s_type"]=="M")  && ($ids_fetch["register"] !="R"))
于 2013-05-15T15:08:42.930 回答
1

在这段代码中,3 和 4 永远不会是真的。如果$ids_fetch["s_type"]=="Y"为真,那么它甚至永远不会评估 3 是否为真。

2 和 4 也是如此。您可以通过重新排序来修复它:

<?php
if($ids_fetch["s_type"]=="Y" && $ids_fetch["register"]=="R")
{
    echo "Ref-Yearly";
}
else if($ids_fetch["s_type"]=="M" && $ids_fetch["register"]=="R")
{
    echo "Ref-Monthly";
} 
else if($ids_fetch["s_type"]=="Y")
{
    echo "Yearly";
}
else if($ids_fetch["s_type"]=="M")
{
    echo "Monthly";
}
else
{
    echo "Free";
}
?>

或者可能最好使用 switch 语句

<?php
switch($ids_fetch['s_type'])
{
    case 'Y':
    if($ids_fetch["register"]=="R")
    {
        echo "Ref-Yearly";
    } else {
        echo "Yearly";
    }
    break;

    case 'M':
    if($ids_fetch["register"]=="R")
    {
        echo "Ref-Monthly";
    } else {
        echo "Monthly";
    }
    break;

    default:
    echo "free";
    break;
}
?>
于 2013-05-15T15:11:38.217 回答
0

从您的代码中,第 3 个和第 4 个条件将永远不会执行。

使用 If/Else If/Else 语句,只有其中一个会执行。这是因为一旦达到一个条件,该块将被执行,其余的将不会被评估。如果没有条件为真,则执行 else 块。

你的第一个条件($ids_fetch["s_type"] == "Y")和你的第三个条件($ids_fetch["s_type"] == "Y" && $ids_fetch["register"] == "R")很接近,但不一样。如果要满足第三个条件,那么第一个条件必然需要为真。因此,它将被评估和执行,第三个将被跳过。

您的第二个条件和第四个条件也是如此。

我建议将第三和第四作为第一和第二,你的逻辑应该有效。

<?php
if($ids_fetch["s_type"]=="Y" && $ids_fetch["register"]=="R")
{
    echo "Ref-Yearly";
}
else if($ids_fetch["s_type"]=="M" && $ids_fetch["register"]=="R")
{
    echo "Ref-Monthly";
}
else if($ids_fetch["s_type"]=="Y")
{
    echo "Yearly";
}
else if($ids_fetch["s_type"]=="M")
{
    echo "Monthly";
}

else
{
    echo "Free";
}
  ?>
于 2013-05-15T15:11:14.767 回答