私はこの機能を得ました:
///////////////////////////////////////////////////////////////
public static function make_table( $inputList, $funcArray ,$fieldArray){
$i = 0;
$result = Array();
foreach($inputList as $element){
$j = 0;
foreach($funcArray as $function){
$result[$i][$fieldArray[$j]] = $element->$function();
$j++;
}
$i++;
}
return $result;
}
ここで、inputList は Ticket_Reply アイテム (クラス ticket_content のインスタンス変数を含む) のリストです。 funcArray は実行する関数のリストです。
/////////////////////////////////////////////////// 私は次のように実行します:
$result['ticket_replies'] = make_table($entire_ticket['reply_array'], Array("getTReplyId","getContent()->getContent","getTimestamp"), Array("tReplyId","replyContent","timestamp"));
getContent()->getContent を渡すときに私がやろうとしているのは、Ticket_Reply オブジェクトの getContent を実行することです。これは ticket_content オブジェクトを返し、返されたオブジェクトに対して getContent を実行してコンテンツを表すテキストを返します。
//////////////////////////////////////// // これを関数で実行すると配列
Array("getTReplyId","getContent()","getTimestamp")
それ以外の
Array("getTReplyId","getContent()->getContent","getTimestamp")
次に、 print_r によって見つかった私の出力:
Array ( [0] => Array ( [tReplyId] => 1 [replyContent] => Ticket_Content Object ( [tContentId:Ticket_Content:private] => 1 [content:Ticket_Content:private] => ik krijg het spel niet installed! [db] => Array ( [host] => localhost [port] => 3306 [name] => ryzom_ams_lib [user] => root [pass] => xxxxxx ) ) [timestamp] => 2013-07-08 14:47:19 ) [1] => Array ( [tReplyId] => 5 [replyContent] => Ticket_Content Object ( [tContentId:Ticket_Content:private] => 5 [content:Ticket_Content:private] => Help he got hacked! [db] => Array ( [host] => localhost [port] => 3306 [name] => ryzom_ams_lib [user] => root [pass] => xxxxxx ) ) [timestamp] => 2013-07-09 00:48:17 ) )
ご覧のとおり、replyContent はクラス ticke_content のオブジェクトであり、クラス ticket_content は関数 getContent を提供します。したがって、$funcArray 内の getContent()->getContent はオブジェクトの getContent を実行すると推測しますが、代わりに、警告:
Fatal error: Call to undefined method Ticket_Reply::getContent()->getContent()
ここで、Ticket_Reply は、inputList の実際のオブジェクトのクラスの名前です
今、誰かが call_user_func_array を使用するように私に言ったことがあります。
public static function make_table( $inputList, $funcArray ,$fieldArray){ $i = 0; $result = Array(); foreach($inputList as $element){ $j = 0; foreach($funcArray as $function){ $result[$i][$fieldArray[$j]] = call_user_func_array(array_merge(array($element), $function),array()); $j++; } $i++; } return $result; }
パラメータを使用:
make_table($entire_ticket['reply_array'], Array(Array("getTReplyId"),Array("getContent", "getContent"),Array("getTimestamp")), Array("tReplyId","replyContent","timestamp"));
警告がありますが:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members
正しい結果を返しません。実際にこれを行うことは可能ですか?