如何确定 php 中的多 select 组合
How do I determine multi-select combinations in php
我的 HTML 代码中有 3 个 SELECT
元素,例如 "province"、"district" 和 "market"。我需要一个示例算法来检测是否已完成选择的表单元素的组合。我正在考虑 if 条件的 6 种组合。
如何确定填充的 SELECT
元素与最少 if 条件数的组合?
到目前为止我的代码应该说明了我正在努力实现的目标:
<select name="a">
<option value="acity">a city</option>
</select>
<select name="b">
<option value="bdistrict">b district</option>
</select>
<select name="c">
<option value="cmarket">c market</option>
</select>
<?php
if($_POST["a"] != null and $_POST["b"] != null and $_POST["c"] != null)
echo "aaaa";
elseif($_POST["a"] != null and $_POST["b"] != null)
echo "bbb";
/*elseif ...*/
?>
感谢回复。
您可以将答案存储在一个数组中。下面的代码做了 2 个决定:从第一个选项中选择了多少个连续选项以及包含的任意组合 none。除了存储值,您甚至可以存储函数。
$combination = [ 'abc' => function() {return 'foo bar';} /* , ... */ ];
$combination['abc']();`
<!DOCTYPE html>
<html>
<body>
<form method="post">
<select name="a">
<option></option>
<option value="acity">a city</option>
</select>
<select name="b">
<option></option>
<option value="bdistrict">b district</option>
</select>
<select name="c">
<option></option>
<option value="cmarket">c market</option>
</select>
<button type="submit">submit</button>
</form>
<?php
$post_keys = [
'a' => 'aaa',
'b' => 'bbb',
'c' => 'ccc'
];
$value = '[no valid selection]';
foreach($post_keys as $key => $val)
if(isset($_POST[$key]) && '' !== $_POST[$key])
$value = $val;
else
break;
?>
<div>Form has been filled until: <?php echo $value;?>.</div>
<?
$combination = [
'' => 'nothing',
'a' => 'only a',
'ab' => 'c missing',
'abc' => 'all',
'ac' => 'b missing',
'b' => 'only b',
'bc' => 'a missing',
'c' => 'only c'
];
$key_seq = '';
foreach($post_keys as $key => $val)
if(isset($_POST[$key]) && '' !== $_POST[$key])
$key_seq .= $key;
$value = $combination[$key_seq];
?>
<div>Combination of a,b,c: <?php echo $value;?>.</div>
</body>
</html>
我的 HTML 代码中有 3 个 SELECT
元素,例如 "province"、"district" 和 "market"。我需要一个示例算法来检测是否已完成选择的表单元素的组合。我正在考虑 if 条件的 6 种组合。
如何确定填充的 SELECT
元素与最少 if 条件数的组合?
到目前为止我的代码应该说明了我正在努力实现的目标:
<select name="a">
<option value="acity">a city</option>
</select>
<select name="b">
<option value="bdistrict">b district</option>
</select>
<select name="c">
<option value="cmarket">c market</option>
</select>
<?php
if($_POST["a"] != null and $_POST["b"] != null and $_POST["c"] != null)
echo "aaaa";
elseif($_POST["a"] != null and $_POST["b"] != null)
echo "bbb";
/*elseif ...*/
?>
感谢回复。
您可以将答案存储在一个数组中。下面的代码做了 2 个决定:从第一个选项中选择了多少个连续选项以及包含的任意组合 none。除了存储值,您甚至可以存储函数。
$combination = [ 'abc' => function() {return 'foo bar';} /* , ... */ ];
$combination['abc']();`
<!DOCTYPE html>
<html>
<body>
<form method="post">
<select name="a">
<option></option>
<option value="acity">a city</option>
</select>
<select name="b">
<option></option>
<option value="bdistrict">b district</option>
</select>
<select name="c">
<option></option>
<option value="cmarket">c market</option>
</select>
<button type="submit">submit</button>
</form>
<?php
$post_keys = [
'a' => 'aaa',
'b' => 'bbb',
'c' => 'ccc'
];
$value = '[no valid selection]';
foreach($post_keys as $key => $val)
if(isset($_POST[$key]) && '' !== $_POST[$key])
$value = $val;
else
break;
?>
<div>Form has been filled until: <?php echo $value;?>.</div>
<?
$combination = [
'' => 'nothing',
'a' => 'only a',
'ab' => 'c missing',
'abc' => 'all',
'ac' => 'b missing',
'b' => 'only b',
'bc' => 'a missing',
'c' => 'only c'
];
$key_seq = '';
foreach($post_keys as $key => $val)
if(isset($_POST[$key]) && '' !== $_POST[$key])
$key_seq .= $key;
$value = $combination[$key_seq];
?>
<div>Combination of a,b,c: <?php echo $value;?>.</div>
</body>
</html>