我有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文档并没有帮助我充分理解这个复杂的代码(对我来说无论如何:) :)
答案 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"/>