2014-10-16 32 views
0

我正嘗試在無限數量的父項和子項的選擇框中創建一棵樹。 和我的選擇框(html部分)應該是Access,我已經給出了下圖。選擇框中的父子樹

我有一個「categories」數組,它有兩個主節點數量不限的節點(父 - 子)。兩個主陣列名稱是[scope] => selectboxFirst[scope] => selectboxsecond。有一個parentid4000開頭。我不能在代碼中硬編碼parentid。數組來自解碼的json字符串。

我不知道如何循環這個數組,並在一個單獨的選擇框中顯示兩個數組。

在我發佈的示例數組中,一個數組內有兩個主數組,但它們也可以在其他數組中。我不知道如何在兩個選擇框中顯示父母孩子。

所有[scope] => selectboxFirst類別將顯示在第一個選擇框中,並在第二個選擇框中顯示[scope] => selectboxsecond類別。

Array 
(
    [status] => Array 
     (
      [message] => Good 
      [code] => 200 
     ) 

    [categories] => Array 
     (
      [0] => Array 
       (
        [scope] => selectboxFirst 
        [categories] => Array 
         (
          [0] => Array 
           (
            [id] => 4001 
            [parentId] => 4000 
            [name] => Access 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4010 
                [parentId] => 4001 
                [name] => mine 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4011 
                [parentId] => 4001 
                [name] => yours 
                [type] => Reference 
               ) 


             ) 

            [type] => Reference 
           ) 

          [1] => Array 
           (
            [id] => 4002 
            [parentId] => 4000 
            [name] => Communication 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4015 
                [parentId] => 4002 
                [name] => Physician 
                [children] => Array 
                 (
                  [0] => Array 
                   (
                    [id] => 4016 
                    [parentId] => 4015 
                    [name] => Helps blsys Understand 
                    [type] => Reference 
                   ) 

                  [1] => Array 
                   (
                    [id] => 4017 
                    [parentId] => 4015 
                    [name] => Listens 
                    [type] => Reference 
                   ) 


                 ) 

                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4021 
                [parentId] => 4002 
                [name] => Clinical ps 
                [children] => Array 
                 (
                  [0] => Array 
                   (
                    [id] => 4022 
                    [parentId] => 4021 
                    [name] => yours ps/datasssss 
                    [type] => Reference 
                   ) 



                 ) 

                [type] => Reference 
               ) 

              [2] => Array 
               (
                [id] => 4024 
                [parentId] => 4002 
                [name] => etc 
                [type] => Reference 
               ) 



             ) 

            [type] => Reference 
           ) 

          [2] => Array 
           (
            [id] => 4003 
            [parentId] => 4000 
            [name] => Office 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4026 
                [parentId] => 4003 
                [name] => Facilities/Environment 
                [children] => Array 
                 (
                  [0] => Array 
                   (
                    [id] => 4027 
                    [parentId] => 4026 
                    [name] => Noise 
                    [type] => Reference 
                   ) 

                  [1] => Array 
                   (
                    [id] => 4028 
                    [parentId] => 4026 
                    [name] => Lighting 
                    [type] => Reference 
                   ) 



                 ) 

                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4032 
                [parentId] => 4003 
                [name] => Office ps 
                [children] => Array 
                 (
                  [0] => Array 
                   (
                    [id] => 4033 
                    [parentId] => 4032 
                    [name] => mine ps 
                    [type] => Reference 
                   ) 



                 ) 

                [type] => Reference 
               ) 

              [2] => Array 
               (
                [id] => 4035 
                [parentId] => 4003 
                [name] => Billing 
                [type] => Reference 
               ) 



             ) 

            [type] => Reference 
           ) 

          [3] => Array 
           (
            [id] => 4004 
            [parentId] => 4000 
            [name] => Outgo 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4037 
                [parentId] => 4004 
                [name] => Diagnosis 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4038 
                [parentId] => 4004 
                [name] => Quality of Procedure 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [4] => Array 
           (
            [id] => 4005 
            [parentId] => 4000 
            [name] => Loyalty 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4039 
                [parentId] => 4005 
                [name] => Likely to also 
                [type] => Reference 
               ) 



             ) 

            [type] => Reference 
           ) 

         ) 

       ) 

      [1] => Array 
       (
        [scope] => selectboxSecond 
        [categories] => Array 
         (
          [0] => Array 
           (
            [id] => 4251 
            [parentId] => 4250 
            [name] => Communication with datas 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4262 
                [parentId] => 4251 
                [name] => respect? 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4263 
                [parentId] => 4251 
                [name] => you? 
                [type] => Reference 
               ) 


             ) 

            [type] => Reference 
           ) 

          [1] => Array 
           (
            [id] => 4252 
            [parentId] => 4250 
            [name] => Communication with Doctors 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4266 
                [parentId] => 4252 
                [name] => you with courtesy 
                [type] => Reference 
               ) 



             ) 

            [type] => Reference 
           ) 

          [2] => Array 
           (
            [id] => 4253 
            [parentId] => 4250 
            [name] => Responsiveness of data ps 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4269 
                [parentId] => 4253 
                [name] => During 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4270 
                [parentId] => 4253 
                [name] => How 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [3] => Array 
           (
            [id] => 4254 
            [parentId] => 4250 
            [name] => Pain Management 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4271 
                [parentId] => 4254 
                [name] => During 
                [type] => Reference 
               ) 


             ) 

            [type] => Reference 
           ) 

          [4] => Array 
           (
            [id] => 4255 
            [parentId] => 4250 
            [name] => Communication about Medicines 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4274 
                [parentId] => 4255 
                [name] => During this data stay 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4275 
                [parentId] => 4255 
                [name] => Before giving you 
                [type] => Reference 
               ) 

              [2] => Array 
               (
                [id] => 4276 
                [parentId] => 4255 
                [name] => Before giving you 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [5] => Array 
           (
            [id] => 4256 
            [parentId] => 4250 
            [name] => Discharge Information 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4277 
                [parentId] => 4256 
                [name] => During this data stay the data? 
                [type] => Reference 
               ) 

              [1] => Array 
               (
                [id] => 4278 
                [parentId] => 4256 
                [name] => After you left the data 
                [type] => Reference 
               ) 

              [2] => Array 
               (
                [id] => 4279 
                [parentId] => 4256 
                [name] => During this data stay 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [6] => Array 
           (
            [id] => 4257 
            [parentId] => 4250 
            [name] => Care Transition 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4280 
                [parentId] => 4257 
                [name] => During this data stay 
                [type] => Reference 
               ) 


             ) 

            [type] => Reference 
           ) 

          [7] => Array 
           (
            [id] => 4258 
            [parentId] => 4250 
            [name] => Cleanliness of data Environment 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4282 
                [parentId] => 4258 
                [name] => During this data? 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [8] => Array 
           (
            [id] => 4259 
            [parentId] => 4250 
            [name] => Quietness of data Environment 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4283 
                [parentId] => 4259 
                [name] => During this data? 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [9] => Array 
           (
            [id] => 4260 
            [parentId] => 4250 
            [name] => also the data 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4284 
                [parentId] => 4260 
                [name] => Would you? 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

          [10] => Array 
           (
            [id] => 4261 
            [parentId] => 4250 
            [name] => Overall Rating of data 
            [children] => Array 
             (
              [0] => Array 
               (
                [id] => 4285 
                [parentId] => 4261 
                [name] => Using any number 
                [type] => Reference 
               ) 

             ) 

            [type] => Reference 
           ) 

         ) 

       ) 

     ) 

) 

輸出shoiuld是這樣的。例如:相對應的ID來選擇框裏面有選項 訪問

Electronics 
--Keyboards 
--Phones 
----HTC DESIRE Z 
----HTC ONE X 
-------Camera 
-------Battety 
Food 
--Fruits 
----Apple 
----Watermelon 
--Vegetables 
----Carrot 
----Onion 

**inside select box . for eg: <select><option value='4001'>Access</option></select>** 

沿着我至今這麼多,但它顯示的一切.Still沒有得到

$json = json_decode($string,TRUE); 


//echo "<pre>"; 
//print_r($json); 

recursive($json,$level=1); 
function recursive($array, $level = 1){ 
    foreach($array as $value){ 
     //If $value is an array. 
     if(is_array($value)){ 
      //We need to loop through it. 
      recursive($value, $level + 1); 
     } else{ 
      //It is not an array, so print it out. 
      echo str_repeat("-", $level), $value, '<br>'; 
     } 
    } 
} 
+0

看看遞歸。 – msfoster 2014-10-16 16:48:33

+0

我不知道我的父母id.It可以是2或3任何數字。我很困惑如何找到沒有指定parent_id深度。 – aniltc 2014-10-16 17:08:20

+0

這個數據結構應該是什麼結構?選擇框只能是平面列表。 – 2014-10-16 18:39:18

回答

2

以下代碼將遞歸遍歷您的數據結構並創建選項列表。由於它非常簡單,我將爲您創建select標籤。我已使用PHP_EOL在每個選項之後添加換行符,以使HTML代碼更易於閱讀。

foreach ($data['categories'] as $c) { 
    # scope is $c['scope'] 
    echo "Starting " . $c['scope'] . PHP_EOL; 
    # calling the function on the categories data  
    recurse($c['categories']); 
    echo "Finished " . $c['scope'] . PHP_EOL; 
} 

function recurse($arr, $level = 0){ 
    # we have a numerically-indexed array. go through each item: 
    foreach ($arr as $n) { 
     # print out the item ID and the item name 
     echo '<option value="' . $n['id'] . '">' 
     . str_repeat("-", $level) 
     . $n['name'] 
     . '</option>' 
     . PHP_EOL; 
     # if item['children'] is set, we have a nested data structure, so 
     # call recurse on it. 
     if (isset($n['children'])) { 
      # we have children: RECURSE!! 
      recurse($n['children'], $level+1); 
     } 
    } 
} 

輸出:

Starting selectboxFirst 
<option value="4001">Access</option> 
<option value="4010">-mine</option> 
<option value="4011">-yours</option> 
<option value="4002">Communication</option> 
<option value="4015">-Physician</option> 
<option value="4016">--Helps blsys Understand</option> 
<option value="4017">--Listens</option> 
<option value="4021">-Clinical ps</option> 
<option value="4022">--yours ps/datasssss</option> 
<option value="4024">-etc</option> 
<option value="4003">Office</option> 
<option value="4026">-Facilities/Environment</option> 
<option value="4027">--Noise</option> 

(等)

您可以用適當的代碼爲 「啓動selectboxFirst/selectboxSecond」。

+0

它仍然顯示爲一個列表,而不是在選擇框中.ID可以顯示在頁面中。只有顯示的名稱和ID應該附加在選項內作爲值,例如: aniltc 2014-10-16 21:05:40

+0

編輯您的問題以添加此信息,並且您還應該指定您也需要幫助生成HTML。 – 2014-10-16 21:06:59

+0

謝謝我添加了我試圖顯示這種方式,但沒有得到 – aniltc 2014-10-16 21:15:03