Как объединить многомерное с конкретным значением - PullRequest
0 голосов
/ 14 июня 2019

У меня проблема с объединением двумерных массивов

У меня есть три массива с одинаковыми месяцами

первый массив: (Jobseeker)

Array
(
    [0] => Array
        (
            [MONTH] => 5
            [jobseeker] => 4
        )

    [1] => Array
        (
            [MONTH] => 6
            [jobseeker] => 4
        )

)

второй массив: (компания)

Array
(
    [0] => Array
        (
            [MONTH] => 6
            [company] => 11
        )

)

третий массив: (задания)

Array
(
    [0] => Array
        (
            [MONTH] => 6
            [job] => 20
        )

)

Я попробовал этот код:

$total_stats = array_merge_recursive($jobseeker_stats, $company_stats, $job_stats);

Я ожидаю, что результат будет:

Array
(
     [0] => Array
        (
            [MONTH] => 5
            [jobseeker] => 4
        )
     [1] => Array
        (
            [MONTH] => 6
            [jobseeker] => 4
            [company] => 11
            [job] => 20
        )

Ответы [ 3 ]

3 голосов
/ 14 июня 2019

Вам необходимо использовать array_column () , array_search () с foreach ()

$seconArrayMonths =  array_column($array2,'MONTH');
$thirdArrayMonths =  array_column($array3,'MONTH');


foreach($array1 as &$arr){
    $secondArrayMonthKey = array_search($arr['MONTH'],$seconArrayMonths);
    if($secondArrayMonthKey !== false){
        $arr['company'] = $array2[$secondArrayMonthKey]['company'];
    }
    $thirdArrayMonthKey = array_search($arr['MONTH'],$thirdArrayMonths);
    if($thirdArrayMonthKey !== false){
        $arr['job'] = $array3[$secondArrayMonthKey]['job'];
    }

}

print_r($array1);

Вывод: - https://3v4l.org/BKJqj

1 голос
/ 14 июня 2019

Вы можете сделать массивы ассоциативными и использовать array_replace_recursive.

$jobSeeker = array_column($jobSeeker, Null, "MONTH");
$company = array_column($company, Null, "MONTH");
$jobs = array_column($jobs, Null, "MONTH");

$jobSeeker = array_replace_recursive($jobSeeker, $company, $jobs);
var_dump($jobSeeker);

выход

array(2) {
  [5]=>
  array(2) {
    ["MONTH"]=>
    int(5)
    ["jobseeker"]=>
    int(4)
  }
  [6]=>
  array(4) {
    ["MONTH"]=>
    int(6)
    ["jobseeker"]=>
    int(4)
    ["company"]=>
    int(11)
    ["job"]=>
    int(20)
  }
}

https://3v4l.org/HW7OV

1 голос
/ 14 июня 2019
$jobSeeker = array('0' => array('MONTH' => 5,'jobseeker' => 4),'1' => array('MONTH' => 6, 'jobseeker' => 4));
$company = array('0' => array('MONTH' => 6,'company' => 11));
$jobs = array('0' => array('MONTH' => 6,'job' => 20));

$mergeArray = array();

foreach($jobSeeker as $js){
    $mergeArray[$js['MONTH']]['MONTH'] = $js['MONTH'];
    $mergeArray[$js['MONTH']]['jobseeker'] = $js['jobseeker'];
}

foreach($company as $c){
    $mergeArray[$c['MONTH']]['MONTH'] = $c['MONTH'];
    $mergeArray[$c['MONTH']]['company'] = $c['company'];
}

foreach($jobs as $j){
    $mergeArray[$j['MONTH']]['MONTH'] = $j['MONTH'];
    $mergeArray[$j['MONTH']]['job'] = $j['job'];
}

$result = array();
foreach($mergeArray as $m){ 
    array_push($result, $m);
}
print_r($result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...