我有一个下拉菜单,使用zend视图助手,formSelect()函数从数据库表中获取所有标志(或称为标记)值,但值以数组格式显示。我只需要自己的标志值名称。
以下是我的视图phtml文件中显示下拉菜单的代码:
<td><?php echo $this->formSelect('flag_id', null, null, $this->aFlags); ?> </td>
标志方法在这个类中:
class App_Flags extends App {
public $rows = array(iPropertyID);
public function __construct() {
parent::__construct();
}
public function getPropFlags() {
$flag_tcid = 4;
$oSql = new Db_Table_Flags();
$oSelect = $oSql->select();
$oSelect->from(array('f' => 'flags'),array('value' => 'flag_name'));
$oSelect->where('flag_type_category = ?', $flag_tcid);
$rowCount = count($oSelect);
if ($rowCount > 0) {
echo "found $rowCount rows";
} else {
echo 'no rows matched the query';
}
$result = $oSql->fetchAll($oSelect)->toArray();
return $result;
}
下拉菜单显示以下值:
0
flag name
1
another flag name
2
flag name again
3
flag name here
我不想在下拉列表中显示数组键。我只需要标志名称。 看起来formSelect()中的第一个参数被忽略了b / c它根据这个拉出一个数组:
string formSelect(string | array $ name,[mixed $ value = null],[array | string $ attribs = null],[array $ options = null],[string $ listsep =“
\ n “])
string | array $ name:
如果是字符串,则为元素名称。如果是数组,则忽略所有其他参数,并提取数组元素以代替添加的参数。
或者它可能是在getPropFlags()中设置查询的方式。我不确定我做错了什么。我已经看了一段时间并且没有想法。任何帮助都会很棒。
答案 0 :(得分:0)
将其更改为:
$result = $oSql->fetchAll($oSelect)
$options = array();
foreach($result as $k => $v) {
$options[$v['f']] => $v['value'];
}
return $options;
执行一些var_dumps来比较数组。您需要一个简单的键/值对数组。