2014-02-05 82 views
0
function merge_common_keys(){ 
    $arr = func_get_args(); 
    $num = func_num_args(); 

    $keys = array(); 
    $i = 0; 
    for($i=0;$i<$num;++$i){ 
     $keys = array_merge($keys, array_keys($arr[$i])); 
    } 
    $keys = array_unique($keys); 

    $merged = array(); 

    foreach($keys as $key){ 
     $merged[$key] = array(); 
     for($i=0;$i<$num;++$i){ 
     $merged[$key][] = isset($arr[$i][$key])?$arr[$i][$key]:null; 
     } 
    } 
    return $merged; 
    } 

$merged = merge_common_keys($find_parent_category,$find_sub_category); 
    print_r($merged); 

我的輸出如下面顯示陣列輸出在PHP

 Array 
    (
     [1] => Array 
      (
       [0] => Accounting & Financial 
       [1] => Array 
        (
         [Accounting Audit & Assurance] => 24 
         [Accounting Services] => 25 
         [Accounting Software] => 26 
        ) 

      ) 

     [6] => Array 
      (
       [0] => Creative 
       [1] => 
      ) 

     [7] => Array 
      (
       [0] => Data Management 
       [1] => Array 
        (
         [Analytical Tools] => 27 
         [Cloud Computing] => 28 
         [Data Bases] => 29 
        ) 

      ) 

    ) 

我想這樣的

<select> 
<option class="add class" value="">Accounting & Financial</option> 
<option value="24">Accounting Audit & Assurance</option> 
<option value="25">Accounting Services</option> 
<option value="26">Accounting Software</option> 
</select> 



<select> 
<option class="add class" value="">Data Management</option> 
<option value="">Analytical Tools</option> 
<option value="">Cloud Computing</option> 
<option value="">Data Bases</option> 
</select> 
+0

你到目前爲止試過了什麼? –

+0

@AnthonyGarcia我沒有得到應該改變功能或做出不同的循環? –

回答

1

你可以嘗試像

foreach ($merged as $select) { 
    echo '<select>'; 
    echo '<option class="add class" value="">' . $select[0] . '</option>'; 
    foreach ($select[1] as $opt) { 
    echo '<option value="">' . $opt .'</option>'; 
    } 
    echo '</select>'; 
} 

的數據顯示基本上它只是迭代並打印信息y OU想

+0

代碼工作正常,但具有與該一個選擇框給予() –

0

試試這個

for($i=0;i<sizeof($merged);$i++) 
{ 

echo "<select>"; 
for($j=0;$j<sizeof($merged[$i]);$j++) 
{ 
if($j == 0) 
echo "<option class='add class' value='$merged[$i][$j]'></option>"; 
else 
echo "<option value='$merged[$i][$j]'>$merged[$i][$j]</option>"; 
} 
echo "</select>" 

} 
1

試試這個。

foreach ($merged as $select) { 
    if(is_array($select[1])){ 
     echo '<select>'; 
     echo '<option class="add class" value="">' . $select[0] . '</option>'; 
     foreach ($select[1] as $opt => $optVal) { 
      echo '<option value="'. $optVal .'">' . $opt .'</option>'; 
     } 
     echo '</select>'; 
    } 
} 
+0

代碼工作正常WHT我想要提供的foreach錯誤無效的參數,但給出該錯誤:廣告警告(2):爲foreach提供的無效參數() –

+0

我沒有得到使用給定數組的錯誤。你可以發佈你試圖展示的整個陣列嗎? – rccoros

+0

我怎麼能刪除選項我的意思是說,如果有不會顯示單個期權價值,看到我更新的問題 –