strcmp()期望参数2是字符串,给定对象

时间:2012-04-18 02:33:04

标签: php warnings

我的页面上收到以下警告:

"strcmp() expects parameter 2 to be string, object given"

我的代码如下:      a.php只会:

 $x = $_GET['a'];
 $y = $_GET['b'];
 $obj = new TestClass();
 $obj->methodCall($x,$y)

识别TestClass:

class TestClass{
   public function methodCall($x,$y){
    if((strcmp('val1',$x) > 0) && (strcmp('val2',$y) >0)){
      //do something
    }
   }
 }

在我使用strcmp的行上获取警告。它看起来很直接,但无法弄清楚问题:(

1 个答案:

答案 0 :(得分:2)

根据您的评论,$y参数是一个对象(InventoryManager),而不是字符串。 strcmp期望两个args都是一个字符串。如果对象使用__toString()方法,则可以执行此操作:

// Cast object $y as a string when passed
// But you would have to check the __toString method to see how the string was being
// built to ensure it's the correct attribute you wish to compare
$object->methodCall($x, (string) $y);

否则,我认为您可能通过表单提交错误地设置了$_GET['b']值。

JIC,这是指向strcmp docs的链接。