usort、uksort、uasortをクラスの中で使用したい・・ - PHPプロ!Q&A掲示板

620

  • 0P

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

質問日時 / 2007年8月27日 12:24    回答数 / 3件

Questioner:  nishiman  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

表題の内容ですが、

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 ・・・とおこられてしまいます。

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

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



ツリー一覧

┗A01weekendphpクラス内の関数にアクセスをする場合、 >>CODE uk
 ┗A01-1nishiman素早い回答ありがとうございます。 期待どおりの動作
  ┗A01-1-1weekendphpPHPマニュアルのコールバック関数の説明部分に、 ク

回答一覧

並び替え:

A01 満足
answererweekendphp [8月27日 12:35]

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

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

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

参考まで。

この意見に回答する

ツリーへ TOPへ

A01-1
replyernishiman [8月27日 13:35]

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

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

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerweekendphp [8月27日 13:47] (最終編集:8月27日 13:54)

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

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

確認してみてください。

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

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

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
include されたファイルの変数
 このエントリーをはてなブックマークに追加 
A
出来ます。include(require)は、その部分に読み込むファイルの内容を展開したのと同義です。エディタでファイル読み込み(あるいはコピペ)した状態と同じだと考えていいです。 #defineや変数定義だけの共通フ...

>>続きを読む

shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)