Как искать элемент в массиве с массивами

0

Каков наилучший способ поиска элемента в этом массиве?

    $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'),            
    );
Теги:

2 ответа

0
Лучший ответ

В зависимости от того, что вы ищете, вы можете сделать что-то в этом направлении:

$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";
    }
}
0

Сделайте foreach как $ key => $ value, внутри которого значение if_array ($ value) foreach $ value как $ key => $ val

Затем просто проверьте наличие совпадений внутри этих циклов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню