获取来自foreach父级的下拉列表

时间:2014-07-05 23:02:04

标签: php

我有2个数组(一个在另一个内),其中一个列出问题列表 - 另一个包含下拉菜单的选项列表。

    <?php foreach ($modelSettings as $name=>$item):?>
            <select name="<?php echo 'model'.($i+1).'['.$name.']' ?>" >
                <?php foreach($item['options'] as $value):?>
                <option value="<?php echo $value?>"><?php echo ucfirst($value);?></option>
                <?php endforeach;?>
            </select>
        <input type="hidden" name="<?php echo 'model'.($i+1).'[id]'?>" value="0"/>
    <?php endforeach;?>

结果如下所示

<select name="model4[car]">
<option value="bmw">BMW</option>
<option value="toyota">Toyota</option>
<option value="volvo">Volvo</option>
</select>

<select name="model4[color]">
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="white">White</option>
</select>

我要做的是消除第一个foreach,以便我手动编写每个<select>,但是通过数组检索下拉列表中的列表。

我一直在尝试各种各样的事情,其中​​包括:

        <select name="model4[car]" >
            <?php foreach ($modelSettings as $name=>$item):?>
            <?php foreach($name[0] as $value):?>
            <option value="<?php echo $value?>"><?php echo ucfirst($value);?></option>
            <?php endforeach;?>
            <?php endforeach;?>
        </select>
    <input type="hidden" name="<?php echo 'model'.($i+1).'[id]'?>" value="0"/>
etc....

但我没有成功。

这是在后端创建数组的方式。

public function getOptions()
    {
        $modelLabels = array('car' => __('Age'),
                            'color'=> __('Color'),
                            'fuel_type'=> __('Fuel Type'),
                            'transmission'=> __('Transmission'));

        $tmpModelSettings = $this->list_columns();
        unset($tmpModelSettings['id'], $tmpModelSettings['name']);
        $modelSettings = array();
        foreach($tmpModelSettings as $key=>$value)
        {
            $modelSettings[$key]['options'] = $value['options'];
            $modelSettings[$key]['label'] = $modelLabels[$key];
        }
        return $modelSettings;
    }

抱歉,我是新手 - 而PHP文档并没有帮助我充分理解这个复杂的代码(对我来说无论如何:) :)

1 个答案:

答案 0 :(得分:0)

您的尝试没有多大意义(为什么要尝试迭代关键引用?)您应该使用键引用访问$modelSettings数组中的特定数组元素。然后,您可以随后访问该数组中的options元素,并foreach覆盖它们。

<select name="model4[car]" >
    <?php foreach($modelSettings['car']['options'] as $value):?>
        <option value="<?php echo $value?>"><?php echo ucfirst($value);?></option>
    <?php endforeach;?>
</select>
<input type="hidden" name="<?php echo 'model'.($i+1).'[id]'?>" value="0"/>