如何通过每个数组中的特定键来比较两个多维数组


How to compare two multidimensional arrays by certain keys in each?

我有两个结构相同的多维数组。

像这样:

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_idcontent对它们进行比较,我发现它们具有相同的内容,我需要将第一个数组中的元素存储到另一个新数组中,这在以前是不存在的。

例如,我需要这样的东西,但更有效:

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

试试这个代码:-

$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);