1

我对 php 很陌生。我有一个名为json. 当我尝试这样做时:

echo $json->status;

我得到:

CREATED

我尝试将此结果与正常字符串进行比较,CREATED如下所示:

if(strcasecmp("CREATED",$json->status))
{
    print_r("Order created successfuly");
}

但由于某种原因,if condition未评估为true. 即使我CREATED比较CREATED

不确定错误在哪里。

提前致谢。

4

6 回答 6

6

如果字符串相等,此函数返回零

if (strcasecmp("CREATED",$json->status) == 0)
于 2013-01-18T11:29:13.790 回答
5

查看手册

Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.

strcasecmp('a','a')也是如此0,因此您必须将代码更改为

if(strcasecmp("CREATED",$json->status) == 0)
{
    print_r("Order created successfuly");
}
于 2013-01-18T11:29:53.013 回答
4

http://php.net/manual/en/function.strcasecmp.php

从页面引用:

如果 str1 小于 str2,则返回 < 0;> 0 如果 str1 大于 str2,如果它们相等则为 0。

所以strcasecmp('CREATED', 'CREATED')返回0。并且0不等于true。你必须这样做:

if (strcasecmp("CREATED",$json->status) === 0) {
    print_r("Order created successfuly");
}
于 2013-01-18T11:29:22.220 回答
3
if (strcasecmp( $json->status, "CREATED") == 0) 
{
...
...

}
于 2013-01-18T11:29:40.263 回答
0

为什么不能只使用更简单的 if 语句?

if( $json->status == "CREATED" ) {
    print_r("Order created successfuly");
}

并检查状态末尾或开头的空格。

于 2013-01-18T11:27:59.677 回答
0

要比较字符串,请尝试执行以下操作:

if($json->status == "CREATED")
{
   echo "Order created successfuly";
}
于 2013-01-18T11:29:15.467 回答