質問: 同一クラス内 関数内でユーザ定義関数でソート class class_name { function sort_function($val1,$val2) { 並び替え関数 return 0or1or-1;} function sousa() { $array=("山田","田中","砂糖"); uasort($array,$this->sort_function) } } 上のようなことをやろうとしているのですけれど function sousa()を実行すると ---エラー---- warning: uasort() [function.uasort]: invalid comparison function. in xxxx.php on line xx ------------- がでます。 クラス内関数を【並び替え用ユーザ定義関数】 として用いるにはどうしたらいいのでしょうか? 解決策をご存知の方がおられましたらご教授頂きたいです。 もちろん、関数をクラス内に配置しないか、 sousa関数内に並び替え関数を配置すれば正常に動作しますが 上のような配置で実行したいです。 よろしくお願いします。m(tt)m
回答: これでしょうかね http://php.s3.to/man/function.call-user-func.html 引用「この関数のパラメータfunctionに array($classname, $methodname)を指定することにより、 クラスメソッドも静的にコールすることができます。」 試してないけど、内部callなら$classnameを$thisにすればいけるんでは?? 参考url:http://php.s3.to/man/function.call-user-func.html