2013-09-30 165 views
0

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

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必须为1但输出为999999.

为什么?

+0

尝试使用''==,如果有效,则字符串可能是相同的值,但不一模一样。注意你的字符串有14个字符,而“类别1”有10,12包括双引号 –

+0

我试过了,但它不起作用 – hakiko

+0

对于字符串比较,他应该在'=='和'==='之间没有区别。仔细检查你的大小写是否相同,并且你没有使用'trim()'追加额外的空格。 –

回答

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. 使用elseifhttp://php.net/manual/en/control-structures.elseif.php
  2. http://www.php.net/manual/en/language.operators.comparison.php

希望它有帮助!

+0

我试过elseif,但没有返回预期的结果。 – hakiko

+1

不需要更改为== == .... – Neal

+0

仍然不能正常工作 – hakiko

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 
} 
+0

我试过了但它不工作:( – hakiko

+0

@hakiko - [真的吗?](http://3v4l.org/QfuJo) –

+0

@hakiko他是正确的,你正在击中旧'如果这个和其他所有'bug。 – cgTag

0

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

在这种情况下,您应该使用“elseif”而不是串联多个“if”。

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 :)

+0

+ 1好开始Jesz :) –

+0

不工作仍然返回999999 – hakiko