在php中的选择框中显示数组输出

时间:2014-02-05 08:14:46

标签: php arrays select

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);

我的输出如下

        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>   

3 个答案:

答案 0 :(得分: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>';
}

基本上它只是迭代并打印您想要的信息

答案 1 :(得分: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>';
    }
}

答案 2 :(得分: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>"

}