0

これは、私が問題を抱えている関数の非常に単純化されたバージョンです。

function example(&$form) {
     $name = $form->getName();

     foreach ($form as $sub) {
          if ($sub instanceof Form) {
               example($sub);
          }
          // need this to be the first entry of $name
          echo $name;
      }

 }

 example($this->form);

の最初のエントリの値を保持する方法が必要です$name

4

3 に答える 3

2

関数に別のパラメーターを追加してみてください

function example(&$form, $firstFormName = null) {
    $name = $form->getName();

    if(is_null($firstFormName))
        $firstFormName = $name;

    foreach ($form as $sub) {
        if ($sub instanceof Form) {
           example($sub, $firstFormName);
        }
    }
    // need this to be the first entry of $name
    echo $name;
}

example($this->form);
于 2012-12-13T20:41:34.477 に答える
1

値をパラメーターとして渡すだけです

function example(&$form, $init_name = null) {
    $name = $form->getName();
    if (empty($init_name)) {
        $init_name = $name;
    }

     foreach ($form as $sub) {
          if ($sub instanceof Form) {
               example($sub, $init_name);
          }
          // current name
          echo $name;
          // initial name
          echo $init_name;
      }
}
于 2012-12-13T20:43:43.813 に答える
0

これらの線に沿った何かがうまくいくはずです。

$first_name = "";
foreach ($form as $sub) {
   if ($first_name == "") {
      $first_name = $sub;
   }
// The rest of your for loop here...
于 2012-12-13T20:45:20.763 に答える