我的页面上收到以下警告:
"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的行上获取警告。它看起来很直接,但无法弄清楚问题:(
答案 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的链接。