从没有Loop的3个不同数组连接值

时间:2017-03-15 07:45:13

标签: php arrays

我有一个名字(John,Suzy,Mary,June,...),一个是域名(@ hotmail,@ gmail,@ yahoo,@ tv,...),另一个是电子邮件扩展名(。 com,.net,.co.uk ......)。

我将所有这些存储在db中,每个都存放在不同的表中。我使用循环从db。

获取值

我的问题是我使用3个循环来尝试不同的电子邮件可能性。它太慢了,页面冻结了。我知道必须有更实用和更优雅的方式,比如使用内置的数组函数之一。例如“array_map”?请大家帮忙。

  foreach ($firstNames->data as $fn){

      foreach ($domains->data as $d){

             foreach ($emailExtensions->data as $de){

                    //add numbers to emails
                   for($n=0;$n<20;$n++){

                       $emails.= $fn['name'].$n.$d['domain'].$de['extension']." <br>";

                         //add dash before number
                         $emails.= $fn['name']."-".$n.$d['domain'].$de['extension']." <br>";


                      }

             $emails.= $fn['name'].$d['domain'].$de['extension']." ".$is_valid." <br>";   


         }

     }

 }

      echo  "<h4> " . $emails. "</h4><br>";

2 个答案:

答案 0 :(得分:0)

   $names = array('abbasalibutt', 'bilal');
$domains = array('@gmail','@yahoo');
$extensions = array('.com', '.ca');

$emailsParts = array();
$emails = array();

foreach($domains as $domain){
    foreach($extensions as $extension){
        $emailsParts[] =  $domain.$extension;
    }
}


foreach($names as $name){
    foreach($emailsParts as $emailsPart){
        $emails[] =  $name.$emailsPart;
    }
}

foreach ($emails as $email){
    echo $email.'<br/>';
}

答案 1 :(得分:0)

问题由MYSQL CONCAT()函数解决:

    $sql= "SELECT CONCAT(name, domain, extension) as emails FROM 
           first_names, emails_domains, emails_extensions";

然后我只使用一个PHP“while”循环来获得结果。简单,快速。美丽。 :)我肯定会开始思考? Mysqli第一,php第二。谢谢大家的帮助和动力,并指出我正确的方向。