2015-11-15 2 views
0

Я столкнулся с проблемой, пытаясь получить уникальный массив из двух двухмерных массивов, не смог этого сделать.Удалить дубликаты из двух многомерных массивов

Я пробовал поиск по решениям, но все, что я могу сделать, - это всего лишь один массив.

Вот два массива.

Array 
(
    [1] => Array 
     (
      [title] => Strongest Links - Directory list 
      [promotion] => At Strongest Links you can find good linking partners, track directory submission and manage your online promotion campaign. Try it for free. 
      [domain] => http://www.strongestlinks.com 
     ) 
) 
Array 
(
    [0] => Array 
     (
      [title] => Strongest Links - Directory list 
      [kbsize] => 88820 
      [url] => http://www.strongestlinks.com/directories.php 
      [meta_description] => At Strongest Links you can find good linking partners, track directory submission and manage your online promotion campaign. Try it for free. 
      [kbsize_t] => 88.82kb 
     ) 

    [3] => Array 
     (
      [title] => 
Strongest Links - Directory list 
      [kbsize] => 20303 
      [url] => http://www.strongestlinks.com/directories/369 
      [meta_description] => At Strongest Links you can find good linking partners, track directory submission and manage your online promotion campaign. Try it for free. 
      [kbsize_t] => 20.303kb 
     ) 

    [4] => Array 
     (
      [title] => Strongest Links - Directory list 
      [kbsize] => 20366 
      [url] => http://www.strongestlinks.com/directories/317 
      [meta_description] => At Strongest Links you can find good linking partners, track directory submission and manage your online promotion campaign. Try it for free. 
      [kbsize_t] => 20.366kb 
     ) 

    [5] => Array 
     (
      [title] => SmartLinks.org - News, Reference, Facts - QuickLinks 
      [kbsize] => 95526 
      [url] => http://www.smartlinks.org 
      [meta_description] => SmartLinks.org - QuickLinks/Favorites - News, Reference, Facts and Topics organized by Categories. 
      [kbsize_t] => 95.526kb 
     ) 

) 

Я пытаюсь сделать функцию, которая сравнить поле URL из массива 1 с полем домена из массива 2, и возвращает массив 1 минус элементы, которые также находятся в массиве 2.

И еще лучше функция также была бы, если бы она могла сравнить URL-адрес поля в массиве 1 с полем домена в массиве 2 и вернуться с тем, насколько совпадают два поля.

+0

Что такое поле сравнения? –

+1

Вставьте содержимое из 'pastie' на ваш вопрос. Нажмите [править]. – hjpotter92

+0

Отредактировано. Извините, через это было бы большим, если бы я добавил массивы – Convertor

ответ

3

Вы хотите сделать это:

  1. сделать таблицу поиска, где вы можете быстро проверить, если домен должен быть исключен без необходимости искать весь массив
  2. сделать функцию, которая принимает URL и возвращает свой домен
  3. создать новый массив, который вставляет элементы, которые существуют в массиве2, пока эти домены не находятся в вашей таблице поиска исключенных доменов.

Вот код:

// the array of domains that we want to exclude 
// you can still have your other properties too, I just 
// excluded them to make the example cleaner :) 
$array1 = [ 
    [ 'domain' => 'http://www.strongestlinks.com' ] 
]; 

// the array of urls 
$array2 = [ 
    [ 'url' => 'http://www.strongestlinks.com/directories.php' ], 
    [ 'url' => 'http://www.strongestlinks.com/directories/369' ], 
    [ 'url' => 'http://www.smartlinks.org' ] 
]; 

// build a lookup table of domains that we want to subtract from array2 
$blacklisted_domains = []; 
foreach($array1 as $v) { 
    $blacklisted_domains[$v['domain']] = true; 
} 

// small function to take a url and return its domain 
function get_domain($url) { 
    $parts = explode('/', $url); 
    return $parts[0] . '//' . $parts[2]; 
} 

// array3 will contain array2 - array1 
$array3 = []; 

// for each url in array2, find its domain and insert the 
// url into array3 if the domain isnt in blacklisted_domains 
foreach($array2 as $v) { 
    $domain = get_domain($v['url']); 
    if(!isset($blacklisted_domains[$domain])) { 
    $array3[] = $v; 
    } 
} 
+0

Perfect, Полностью, что я искал. Большое спасибо. – Convertor

Смежные вопросы