将下拉选项作为集合数组元素存储到特定变量中


Store dropdown choices as set array elements into specific variables

我有以下html:

<form action="" method="get">
<ul>
    <li>location 
    <select name="locationdo">
        <option value="tax_cb">Checkbox</option>
        <option value="tax_radio">Radio</option>
        <option value="tax_dd">Dropdown</option>
    </select>
    </li>
    <li>genre 
    <select name="genredo">
        <option value="tax_cb">Checkbox</option>
        <option value="tax_radio">Radio</option>
        <option value="tax_dd">Dropdown</option>
    </select>
    </li>
    <li>studio 
    <select name="studiodo">
        <option value="tax_cb">Checkbox</option>
        <option value="tax_radio">Radio</option>
        <option value="tax_dd">Dropdown</option>
    </select>
    </li>
</ul>
<p><input type="submit" value="submit" name="submit" /></p>
</form>

我想要的是根据所做的选择将$which_tax_array中的数组元素存储在单独的变量中。希望代码能更好地解释我想要实现的目标(但它并没有像我希望的那样工作):

if (isset($_GET['submit'])) {
        $which_tax_array = array('location', 'genre', 'studio');
        $what = array();
        foreach ($which_tax_array as $key => $tax_name) {
            $what[$tax_name] = $_GET[$tax_name.'do'];

            foreach ($what as $tax_term => $display_option) {
                if ( in_array($what[$tax_name], $what) ) {
                    $checkboxes = ','.$tax_term;
                } elseif ( in_array($what[$tax_name], $what) ) {
                    $radios .= ','.$tax_term;;
                } elseif ( in_array($what[$tax_name], $what) ) {
                    $dropdowns .= ','.$tax_term;
                }
            }

        }
}
echo 'cb '.$checkboxes.'<br>';
echo 'radio '.$radios . '<br>';
echo 'dd '.$dropdowns.'<br>';

不确定你想做什么。我看到了一些可能的问题-
(1) 直到最后才关闭foreach ($which_tax_array as $key => $tax_name),所以执行下一个foreach太早了
(2) 您有$checkboxes = ','.$tax_term;而不是$checkboxes .= ','.$tax_term;,因此您正在覆盖$checkboxes而不是追加
(3) 您的if ( in_array($what[$tax_name], $what) )将为true,因为您正在检查一个数组值是否在其自己的数组中,所以您的所有值都将在$checkboxes中。我认为您需要检查该值是否等于tax_cbtax_radiotax_dd

试试这样的东西-

if (isset($_GET['submit'])) {
    $which_tax_array = array('location', 'genre', 'studio');
    $what = array();
    foreach ($which_tax_array as $key => $tax_name) {
        $what[$tax_name] = $_GET[$tax_name.'do'];
    }
    foreach ($what as $tax_term => $display_option) {
        if ($what[$tax_name] == 'tax_cb') {
                $checkboxes .= ','.$tax_term;
        } elseif ($what[$tax_name] == 'tax_radio') ) {
                $radios .= ','.$tax_term;;
        } elseif ($what[$tax_name] == 'tax_dd') ) {
                $dropdowns .= ','.$tax_term;
            }
        }
echo 'cb '.$checkboxes.'<br>';
echo 'radio '.$radios . '<br>';
echo 'dd '.$dropdowns.'<br>';
}