我有以下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_cb
、tax_radio
或tax_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>';
}