ワイズリマインダー

PHPで再帰関数を使用すると Function name must be…と表示される

PHP

$func = function($obj){
  if(isset($obj->hoge)){
    foreach($obj->hoge as $xyzzy){
      $func($xyzzy);
    };
  }
};

エラーは次の通り

Function name must be a string in .......

PHPでは無名関数外のスコープの変数が見えません
ですのでuseを使用します

$func = function($obj) use(&$func){
  if(isset($obj->hoge)){
    foreach($obj->hoge as $xyzzy){
      $func($xyzzy);
    };
  }
};

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください