2016-01-08 3 views
1

У меня есть два многомерных массива той же структуры.Как сравнить два многомерных массива по определенным ключам в каждом?

Как это:

array(2) { 
    [0] => 
    array(9) { 
    'id' => 
    string(5) "44994" 
    'ersatzteil_id' => 
    string(3) "120" 
    'lang' => 
    string(6) "name2_tag2" 
    'title' => 
    string(12) "Seitentüren" 
    'alias' => 
    string(12) "seitentueren" 
    'content' => 
    string(1610) "LOREM ISPUM BLALABLBL" 
    'on_main' => 
    string(1) "0" 
    'disabled' => 
    string(1) "1" 
    'short_text' => 
    NULL 
    } 
    [1] => 
    array(9) { 
    'id' => 
    string(5) "44996" 
    'ersatzteil_id' => 
    string(3) "122" 
    'lang' => 
    string(6) "name1_tag1" 
    'title' => 
    string(7) "Spoiler" 
    'alias' => 
    string(7) "spoiler" 
    'content' => 
    string(1513) "SOME OTHER RANDOM TEXT" 
    'on_main' => 
    string(1) "0" 
    'disabled' => 
    string(1) "0" 
    'short_text' => 
    NULL 
    } 
} 

Что мне нужно сделать, это мне нужно сравнить первый массив со вторым. Мне нужно сравнить их по ключам ersatzteil_id и content, и я обнаружил, что у них одинаковый контент. Мне нужно сохранить элемент из первого массива в другом новом массиве, который раньше не существовал.

Например мне нужно что-то вроде этого, но более эффективным:

if(array1[20]['ersatzteil_id'] == array2[145]['ersatzteil_id'] 
     && array1[20]['content'] == array2[145]['content']){ 
     array3 = array1[20]; 
    } 
+0

Посмотрите на [array_uintersect] (Http: //de2.php. net/manual/en/function.array-uintersect.php) или [array_uintersect_assoc] (http://de2.php.net/manual/en/function.array-uintersect-assoc.php). – ccKep

+0

Почему, на ваш взгляд, ваш код недостаточно эффективен? –

ответ

0

Попробуйте этот код: -

$result = []; 
    foreach($array1 as $arr1){ 
     foreach($array2 as $arr2){  
      if(($arr1['id'] == $arr2['id']) && ($arr1['ersatzteil_id'] == $arr2['ersatzteil_id'])){ 
       $result[] = $arr1; 
      } 
     } 
    } 

echo '<pre>'; print_r($result); 
Смежные вопросы