根据select输入值(数组)更改$ mailTo变量

时间:2014-06-11 03:06:59

标签: php arrays

我有以下选择列表:

<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变量,具体取决于他们选择的选项,SalesSales Assist转到sales@email.com,而Billing和{{1转到Billing Assist

PHP pseudeo代码!

billing@email.com

我知道上面没有任何正确的内容,但是您可以看到我要做的事情,根据所选值更改变量的值。我不想用JavaScript做这件事,我宁愿在这里学习更多PHP。

3 个答案:

答案 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];
}