0

私はこれをやっています:

$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"
    }
    ...
}

最初の配列レベルは行で、2 番目のレベルは列だと思います。
IDを文字列として返す理由がわかりません...

次に、クラスを使用して完全なフォームを作成しています。addSelect()最初の引数が値の配列を取り、オプション リストを作成するパブリック関数を呼び出します。内部で -looparray('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
}

この小さな関数を書き直し$get_glasswareて、関数の最初の引数に直接渡し、次のようなオプションを出力させるにはどうすればよいですか。

<option value="1">Cocktail</option>
<option value="2">Margarita</option>
<option value="3">Highball</option>
4

2 に答える 2

1

なぜ、または何をしたいのかわかりませんが、 addSelect の foreach が $name 変数を上書きします。

しかし、私があなたの問題を理解している限り、それはあなたのためにうまくいくはずです。

foreach ($opt as $val => $name){
    $options .= '<option value="' . $name['id'] . '">' . $name['name'] . '</option>';
}

デバッグ機能の場合...通常、var_dumpの代わりにprint_rの方が読みやすいですが、デバッグにはまだ必要な場合があります。

于 2012-07-19T11:47:57.270 に答える
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
}
于 2012-07-19T11:47:44.943 に答える