0

私のページで次の警告が表示されます。

"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両方の引数が文字列であることを期待しています。オブジェクトに__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 に答える