人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP【callback関数の使い方】

配列要素がオブジェクトの時、
全要素に、要素自身のメソッドを実行させることはできるのでしょうか?
ただし、独自関数/クラスを書くのではなく、標準的な方法で。

<?php
class A
{
public function f() {
return 'x';
}
}
$objects = array(new A, new A, new A);

// これを
$wants = array();
foreach ($objects as $obj) {
$wants[] = $obj->f();
}

// こんな感じでできますか?
$wants = array_walk($objects, array(★, 'f'));


●質問者: nannde
●カテゴリ:コンピュータ
✍キーワード:as Class PHP オブジェクト クラス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● y-kawaz
●40ポイント ベストアンサー

こんな感じでしょうか?

<?php
$wants = array_walk($objects, create_function('$o,$i', 'return $o->f();'));
?>
◎質問者からの返答

ありがとうございます!!


2 ● b-wind
●20ポイント
<?php
class A
{
public function f() {
return 'x';
}
}
$objects = array(new A, new A, new A);

$wants = array();
$callback = create_function('$array,$index','$wants[] = $array[$index]->f()');
array_walk($objects,$callbak);

print_r($wants);

PHP: create_function - Manual

こんな所かな。テストはしてないので多少ミスはあるかもしれないが。

◎質問者からの返答

とてもわかりやすく書いていただきましたおかげで、

y-kawazさまのご回答と合わせて理解できました。

ありがとうございました!!


3 ● y-kawaz
●20ポイント

蛇足ですが、PHP6になるとクロージャが使えるようになるので以下のような感じに書くことが出来るようになるらしいですね。

<?php
$wants = array_walk($objects, function($o,$i){return $o->f();});
?>
◎質問者からの返答

情報ありがとうございます!

PHP6 触る際には確実に思い出せそうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ