2014-02-05 62 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

我怎么能删除选项我的意思是说,如果有不会显示单个期权价值,看到我更新的问题 –