0

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

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

我的代码如下:a.php:

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

测试类:

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

在我使用 strcmp 的行收到警告。它看起来很简单,但无法找出问题:(

4

1 回答 1

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 文档的链接。

于 2012-04-18T02:53:47.207 回答