Каков наилучший способ поиска элемента в этом массиве?
$emailsArray= array(
'http://gmail.com' => 'gmail.com',
'http://poczta.onet.pl' => array('onet.pl','vp.pl', 'op.pl', 'spoko.pl', 'poczta.onet.pl', 'onet.eu', 'onet.com.pl', 'opoczta.pl','autograf.pl','vip.pl','vip.onet.pl'),
'http://poczta.wp.pl' => 'wp.pl',
'http://poczta.o2.pl' => 'o2.pl',
'http://mail.tlen.pl' => 'tlen.pl',
'http://poczta.interia.pl' => array('interia.pl','poczta.fm','interia.eu'),
'http://poczta.gazeta.pl' => 'gazeta.pl',
'http://pl.mail.yahoo.com' => array('yahoo.pl','yahoo.com'),
);
В зависимости от того, что вы ищете, вы можете сделать что-то в этом направлении:
$emailDomain = 'o2.pl'; //grab this from an email you want to check
$emailsArray= array(
'http://gmail.com' => 'gmail.com',
'http://poczta.onet.pl' => array('onet.pl','vp.pl', 'op.pl', 'spoko.pl', 'poczta.onet.pl', 'onet.eu', 'onet.com.pl', 'opoczta.pl','autograf.pl','vip.pl','vip.onet.pl'),
'http://poczta.wp.pl' => 'wp.pl',
'http://poczta.o2.pl' => 'o2.pl',
'http://mail.tlen.pl' => 'tlen.pl',
'http://poczta.interia.pl' => array('interia.pl','poczta.fm','interia.eu'),
'http://poczta.gazeta.pl' => 'gazeta.pl',
'http://pl.mail.yahoo.com' => array('yahoo.pl','yahoo.com'),
);
foreach ($emailsArray as $host => $domains) {
if (is_string($domains)) {
$domains = array($domains);
}
if (in_array($emailDomain, $domains)) {
echo "The email is hosted at $host\n";
}
}
Сделайте foreach как $ key => $ value, внутри которого значение if_array ($ value) foreach $ value как $ key => $ val
Затем просто проверьте наличие совпадений внутри этих циклов