我有一个名字(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>";
答案 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第二。谢谢大家的帮助和动力,并指出我正确的方向。