我这样做:
$sql_glassware = 'SELECT id, name FROM glassware';
$qry_glassware = $con->query($sql_glassware);
$get_glassware = $qry_glassware->fetchAll(PDO::FETCH_ASSOC);
debug($get_glassware);
debug()
是个人功能;它返回如下结果:
$get_glassware = array(19) {
[0]=>array(2) {
["id"]=>string(1) "1"
["name"]=>string(8) "Cocktail"
}
[1]=>array(2) {
["id"]=>string(1) "2"
["name"]=>string(9) "Margarita"
}
[2]=>array(2) {
["id"]=>string(1) "3"
["name"]=>string(8) "Highball"
}
...
}
我猜第一个数组级别是行,第二个级别是列 不知道为什么它将id作为字符串返回...
然后我用一个班来构建一个完整的表格;我有一个名为addSelect()
的公共函数,其中第一个参数采用一组值来构建选项列表:array('name0','name1', 'name2','...')
并执行foreach()
- 循环内部:
public function addSelect($opt=array(),$param=array())
$name = $this->useEither($param['name'],'dropdown-list'); // useEither() is a personal function
foreach ($opt as $val => $name){
$options .= '<option value="'.$val.'">'.$name.'</option>';
}
$select = '<select name="'.$name.'" '.$param['string'].'>'.$options.'</select>';
$this->formElements[] = $select; // store the list for use later
}
如何重写这个litte函数,这样我就可以将$get_glassware
直接传递给我的函数第一个参数,让它输出如下选项:
<option value="1">Cocktail</option>
<option value="2">Margarita</option>
<option value="3">Highball</option>
答案 0 :(得分:1)
试试这个:
public function addSelect($opt=array(),$param=array())
$name = $this->useEither($param['name'],'dropdown-list'); // useEither() is a personal function
foreach ($opt as $option){
$options .= '<option value="'.$option['id'].'">'.$option['name'].'</option>';
}
$select = '<select name="'.$name.'" '.$param['string'].'>'.$options.'</select>';
$this->formElements[] = $select; // store the list for use later
}
答案 1 :(得分:1)
我不确定你为什么或者你想做什么,但你在addSelect中的foreach会覆盖$ name变量。
但据我了解你的问题,那应该为你解决问题。
foreach ($opt as $val => $name){
$options .= '<option value="' . $name['id'] . '">' . $name['name'] . '</option>';
}
对于调试函数...通常print_r更容易读取而不是var_dump但是有时候调试可能仍然是必要的。