我有以下选择列表:
<form action="mail.php" method="POST">
<select name="foo" id="foo">
<option value="sales">Sales</option>
<option value="salesAssist">Sales Assist</option>
<option value="billing">Billing</option>
<option value="billingAssist">Billing Assist</option>
</select>
</form>
我需要路由$mailTo
变量,具体取决于他们选择的选项,Sales
和Sales Assist
转到sales@email.com
,而Billing
和{{1转到Billing Assist
。
PHP pseudeo代码!
billing@email.com
我知道上面没有任何正确的内容,但是您可以看到我要做的事情,根据所选值更改变量的值。我不想用JavaScript做这件事,我宁愿在这里学习更多PHP。
答案 0 :(得分:1)
尝试:
function startsWith($haystack, $needle) {
return $needle === "" || strpos($haystack, $needle) === 0;
}
if(startsWith($_POST["foo"], "sales") {
$foo = "sales@email.com";
} else if(startsWith($_POST["foo"], "billing") {
$foo = "billing@email.com";
}
答案 1 :(得分:1)
您的伪代码非常正确。这是一个实现,使用in_array():
if (in_array($_POST['foo'], array('sales', 'salesAssit')) {
$foo = 'sales@email.com';
}
elseif (in_array($_POST['foo'], array('billing', 'billingAssit')) {
$foo = 'billing@email.com';
}
当然,还有其他方法可以解决这个问题。只需要搜索两个值,您也可以执行以下操作:
if ($_POST['foo'] == 'sales' || $_POST['foo'] == 'salesAssit') {
$foo = 'sales@email.com';
}
elseif ($_POST['foo'] == 'billing' || $_POST['foo'] == 'billingAssit') {
$foo = 'billing@email.com';
}
或者,只需检查&#39;结算的发生情况。或者&#39; sales&#39;,使用strpos():
if (strpos($_POST['foo'], 'sales') !== false) {
$foo = 'sales@email.com';
}
elseif (strpos($_POST['foo'], 'billing') !== false) {
$foo = 'billing@email.com';
}
但是,在这样的情况下我喜欢做的事情,你知道它总是一个选项或另一个选项,默认分配一个,只在必要时更改它:
$foo = 'sales@email.com';
if (strpos($_POST['foo'], 'billing') !== false) {
$foo = 'billing@email.com';
}
答案 2 :(得分:0)
请保持简单,先生使用一系列电子邮件值,然后与array_key_exists
交叉检查。
// Set an array of e-mails.
$email_array = array();
$email_array['sales'] = "sales@email.com";
$email_array['salesAssist'] = "sales@email.com";
$email_array['billing'] = "billing@email.com";
$email_array['billingAssist'] = "billing@email.com";
// Do basic checks on 'foo'. If not? It's null.
$foo = isset($_POST['foo']) && !empty($_POST['foo']) ? $_POST['foo'] : null;
// Now check if 'foo' is in the array. If not? It's null.
$mailTo = !empty($foo) && array_key_exists($foo, $email_array) ? $email_array[$foo] : null;
这样做的好处是干净而且干净。简单。您可以在阵列中设置所需的任何电子邮件。您甚至可以设置默认值 - 而不是null
- 如果您希望以某种方式返回脚本而不选择任何选项。
或者如果三元逻辑看起来令人困惑&amp;你宁愿只是立即采取行动,这将有效:
// Do basic checks on 'foo'. And check if 'foo' is in the array. If not? It's null.
$mailTo = null;
if ((isset($_POST['foo']) && !empty($_POST['foo'])) && array_key_exists($_POST['foo'], $email_array)) {
$mailTo = $email_array[$foo];
}