2011-03-07 21 views
1

我有以下代碼這需要在一個變量$main的數據,並通過它循環,使其輸出下面從該數據

Form1 

Firstname 
    Stack 
Lastname 
    Overflow 

Form2 

Grade 
    some grade 
Address 
    some address 
School 
    some school 

標記我通過$main使用循環中的代碼是這樣創建一個對象,並輸出標記,你可以看到dl,dd,dt等。我怎樣才能創建一個對象,而不是像$main_object->form1->firstname或類似的東西?

foreach ($main as $info){ 
    foreach ($info as $form => $data){ 

     $output .= '<h4>'. ucfirst($form) .'</h4>';    
     $output .= '<dl>'; 
     foreach ($data as $key => $value){ 
      $output .= '<dt>'. ucfirst($key) .'</dt>'; 
     if (is_array($value)){ 
      foreach ($value as $label => $val){ 
       $output .= '<dd>'. $val .'</dd>'; 
      } 
      } else { 
      $output .= '<dd>'. $value .'</dd>'; 
      } 
     } 
     $output .= '</dl>'; 

    }//foreach 
}//foreach 
+0

如何確定什麼是標題和什麼是價值?你會有多種形式('Form2','Form3'等)? – 2011-03-07 22:12:35

+0

@Tim Cooper是的,這是'foreach($ info as $ form => $ data){'是for。它通過表單循環。我希望有人能夠通過翻譯當前標記語法告訴我對象語法,我不知道如何創建一個對象。 – silow 2011-03-07 22:16:31

回答

3

可以通過實例化新的stdClass實例來創建對象。你應該能夠修改下面的例子中,以滿足您的需求:

$root = new stdClass; 

// For each form 

    $current_form = $root->$form_name = new stdClass; 

    // For each item 

     $current_form->$item_name = $item_value; 

對象的轉儲,然後將產生類似:

$root->Form1->Firstname; 

stdClass Object 
(
    [Form1] => stdClass Object 
     (
      [Firstname] => Stack 
      // etc.. 
     ) 

) 

然後可以通過以下方式訪問