我如何只访问第二个数组?

时间:2012-07-19 11:10:14

标签: php forms multidimensional-array

我这样做:

$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>

2 个答案:

答案 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但是有时候调试可能仍然是必要的。