0

我有一个变量,它的类型是字符串。var_dump()显示:

var_dump()输出如下:

string(14)

//这是我的代码..

$game_cat = "Some text";// 一些文字的意思是它实际上是以下类别 1,2,3,4 之一 ...

if ( $game_cat === "Category 1" ) {
        $cid = 1;
}

if ( $game_cat === "Category 2" ) {
        $cid = 2;
}

if ( $game_cat === "Category 3" ) {
        $cid = 0;
}

else{
       $cid = 999999;
}

例如,当我更改$game_cat为类别 1 时,如$game_cat = "Category 1";$cid must 1 但输出为 999999。

为什么?

4

4 回答 4

3

利用elseif

if ( $game_cat === "Category 1" ) {
        $cid = 1;
}

elseif ( $game_cat === "Category 2" ) {
        $cid = 2;
}

elseif ( $game_cat === "Category 3" ) {
        $cid = 0;
}

else{
       $cid = 999999;
}

您当前的代码做了什么:

if ( $game_cat === "Category 1" ) {
        $cid = 1; //cid is 1
}

if ( $game_cat === "Category 2" ) {
        $cid = 2; //skipped
}

if ( $game_cat === "Category 3" ) {
        $cid = 0; //skipped
}

else{
       $cid = 999999; //cid == 999999
}
于 2013-09-30T15:29:12.520 回答
1

编辑:工作演示

http://phpfiddle.org/main/code/g02-bjj

尝试这个:

$game_cat = "Category 2";

if ( $game_cat === "Category 1" ) {
        $cid = 1;
}

elseif ( $game_cat === "Category 2" ) {
    $cid = 2;
}

elseif ( $game_cat === "Category 3" ) {
    $cid = 0;
}

else {
   $cid = 999999;
}
  1. 使用elseif: http: //php.net/manual/en/control-structures.elseif.php
  2. http://www.php.net/manual/en/language.operators.comparison.php

希望能帮助到你!

于 2013-09-30T15:29:05.220 回答
1

您正在使用多个 if 语句,而这应该只是一个(else-if)。所以,一开始你的变量会是 1,但是因为最后一个 if 语句覆盖了它,你会得到错误的答案。

执行以下操作:

if ( $game_cat === "Category 1" ) {
        $cid = 1;
}
elseif ( $game_cat === "Category 2" ) {
        $cid = 2;
}
elseif ( $game_cat === "Category 3" ) {
        $cid = 0;
}
else{
       $cid = 999999;
}

有关 elseif 的更多信息,请查看http://php.net/manual/en/control-structures.elseif.php :)

于 2013-09-30T15:30:12.580 回答
0

因为最后else。由于它将"Category 1" $cid被设置为1第一个if条件,但是它将被重置,因为它不是"Category 3"

在这种情况下,您应该使用“elseif”而不是连接许多“if”。

于 2013-09-30T15:29:41.997 回答