Сравните параметры многомерных массивов и объедините их - PullRequest
1 голос
/ 24 марта 2020

У меня есть 2 многомерных массива ($sorted, $sorted_Rcv) с параметрами Account, Analyzed, Received, Year и Month. Received и Analyzed находятся в разных массивах, как вы можете видеть на следующем рисунке.

Arrays

То, чего я пытаюсь достичь, это сравнить 2 массива и, если Account, Month и Year идентичны, объединить их так, чтобы в одном объекте я получил Account, Received, Analyzed, Month и Year .

Это мой нынешний подход. Где я получаю следующую ошибку: Trying to access array offset on value of type int в функции if.

$merged_result = array();
foreach ($sorted as $sorted) {
    foreach ($sorted as $value1) {
      foreach ($sorted_Rcv as $sorted_Rcv) {
            foreach ($sorted_Rcv as $value2) {
                if ($value1['Month'] == $value2['Month'] && $value1['Year'] == $value2['Year']) {
                    $merged_result[]= ['Account' => $value1['Account'], 'Received' => $value2['Received'],'Analyzed' => $value1['Analyzed'],'Month' => $value1['Month'],'Year' => $value1['Year']];
              }
            }
          }
        }
      }

Любая помощь очень ценится!

1 Ответ

1 голос
/ 24 марта 2020

Попробуйте использовать следующее foreach l oop:

$merged_result = array(); 

foreach($sorted as $subar1){
foreach($subar1 as $val){
    foreach($sorted_Rcv as $subar2){ 
    foreach($subar2  as $val2){
        if ($val['Year'] == $val2['Year'] && $val['Month'] == $val2['Month'] && $val['Account'] == $val2['Account']){
            $merged_result[] = [
                                'Year' => $val2['Year'],
                                'Month' => $val2['Month'],
                                'Account' => $val2['Account'],
                                'Analyzed' => $val['Analyzed'],
                                'Received' => $val2['Received'],
            ];
        }   
    }
    }
}
}

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...