アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< samplefile.txtの行番号とfile関数で... 質問一覧 PHP+Smartyで悩んでいます。 >>
  • キーワードが設定されていません

  • 0P
usort、uksort、uasortをクラスの中で使用したい・・

表題の内容ですが、

class hoge {

  function test($a, $b) {
    ・・・(省略)
  }

  function fuga() {
    
    $array = array("a"=>1,"b"=>2,"c"=>3);
    
    uksort = ($array, "test");

  }

}

上記、「uksort = ($array, "test");」の部分で、
Invalid comparison function ・・・とおこられてしまいます。

解決方法あれば教えていただきたいです。
どうぞよろしくお願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

Qusort、uksort、uasortをクラスの中で使用したい・・ nishiman  [08月27日 12時24分] 
┗満開Re:usort、uksort、uasortをクラスの中で使用したい・・ weekendphp  [08月27日 12時35分] 
  ┗Re:Re:usort、uksort、uasortをクラスの中で使用したい・・ nishiman  [08月27日 13時35分] 
    ┗Re:Re:Re:usort、uksort、uasortをクラスの中で使用したい・・ weekendphp  [08月27日 13時47分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:usort、uksort、uasortをクラスの中で使用したい・・

クラス内の関数にアクセスをする場合、

  1. uksort($array, array($this, "test"));

のようにすることで、期待の動作が出来ると思います。

参考まで。

Re:Re:usort、uksort、uasortをクラスの中で使用したい・・

素早い回答ありがとうございます。
期待どおりの動作になりました。ありがとうございます!

しかし理由が分からないので調べて見たいと思います。
なぜなんでしょうか。。。

Re:Re:Re:usort、uksort、uasortをクラスの中で使用したい・・

PHPマニュアルのコールバック関数の説明部分に、
クラス内メソッドをコールバック関数として指定する方法が
記載されています。

http://www.php.net/manual/ja/language.pseudo-types.php

確認してみてください。

ちなみに、"test"だけを指定した場合に、
関数が見つからないというエラーが発生する理由は、
test関数がクラス内の関数だったからです。

クラス内に定義されている関数を呼び出す場合、
TestClassA::test()、とか、インスタンス化した変数を使って
$TestCkassA->test()、のようにする必要があり、
単にtest()としただけでは、目的の関数を呼び出すことは出来ません。
samplefile.txtの行番号とfile関数で... 質問一覧 PHP+Smartyで悩んでいます。