Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 优化a";交叉数据“;电邮给我们表格_Php_Html_Forms_Email - Fatal编程技术网

Php 优化a";交叉数据“;电邮给我们表格

Php 优化a";交叉数据“;电邮给我们表格,php,html,forms,email,Php,Html,Forms,Email,我最近的一项工作是优化一个客户的网站,该网站在客户的网站中包含一个极其繁琐的表单。我想优化它,但我不知道从哪里开始 该网站是一个“服务”数据库。此数据库有一个特殊的表单,允许向特定类型的所有服务提供商发送电子邮件,具体取决于两个筛选器:位置和服务类别。这样做的目的是向几家服务提供商询问一份工作的价格(例如,“我需要在家里找一份工作,我的水槽需要更换,那份工作的价格是多少,等等),它会向该地点的几位“水管工”发一封电子邮件,以便他们回答并找到最便宜/最好的工作) 因此,我们在php脚本上有几个“如

我最近的一项工作是优化一个客户的网站,该网站在客户的网站中包含一个极其繁琐的表单。我想优化它,但我不知道从哪里开始

该网站是一个“服务”数据库。此数据库有一个特殊的表单,允许向特定类型的所有服务提供商发送电子邮件,具体取决于两个筛选器:位置和服务类别。这样做的目的是向几家服务提供商询问一份工作的价格(例如,“我需要在家里找一份工作,我的水槽需要更换,那份工作的价格是多少,等等),它会向该地点的几位“水管工”发一封电子邮件,以便他们回答并找到最便宜/最好的工作)

因此,我们在php脚本上有几个“如果”条件,它们与电子邮件列表具有所有组合。以下是代码片段:

    <?php 
if(($sendLocal == "cascais-oeiras") && ($sendCat == "canalizadores")){$mailToList = "email1@gmail.com, email2@gmail.com, email3@gmail.com, email4@gmail.com";}
    else if(($sendLocal == "cascais-oeiras") && ($sendCat == "eletricistas")){$mailToList = "email1@gmail.com";}
    else if(($sendLocal == "cascais-oeiras") && ($sendCat == "pintores")){$mailToList = "email1@gmail.com, email2@gmail.com, email3@gmail.com, email4@gmail.com, email5@gmail.com";}
        ...
    ?>

这扩展了几行(约480行),因为大约有13个位置($sendLocal)和36个服务类别($sendCat)。电子邮件是硬编码的脚本,管理它们是一个巨大的麻烦

现在,我不需要编写完整的脚本,我只需要一些关于从哪里开始以及使用什么方法的指导。我需要一种方法来跨越2个变量(在本例中是位置和类型),它将返回仅存在于这两个变量中的变量

有没有更好的方法来做到这一点,而不使用500“如果”行列表?我可以从头开始编写代码,或者使用另一种语言/脚本altogheter


谢谢。

我将定义一个
数组,然后从
数组中获取地址。请参见下面的示例

当然,如果您将地址存储在数据库(sqlite、mysql等)中会更好,这样您就不需要在每次需要添加/删除/更改地址时编辑一段代码(这很容易出错&比较困难)

<?php

$lists = [
    'cascais-oeiras_canalizadores' => [
        'address@example.com',
        'moar@example.com',
    ],
    'cascais-oeiras_eletricistas' => [
        'address@example.com',
        'moar@example.com',
    ],
    # ... and so forth
];

# Note you don't *need* to have $lists hard-coded here, obviously, you could 
# also get it from somwhere else, like, read it from a database or text file.

$key = "{$sendLocal}_{$sendCat}";
if (!isset($lists($key)) {
    print('No such list');
    exit(1);
}

$mailToList = implode(', ', $lists);