У меня есть 2 PHP-массива, как это:
array (size=12)
0 => string 'April 2017' (length=10)
1 => string 'Mei 2017' (length=8)
2 => string 'Juni 2017' (length=9)
3 => string 'Juli 2017' (length=9)
4 => string 'Augustus 2017' (length=13)
5 => string 'September 2017' (length=14)
6 => string 'Oktober 2017' (length=12)
7 => string 'November 2017' (length=13)
8 => string 'December 2017' (length=13)
9 => string 'Januari 2018' (length=12)
10 => string 'Februari 2018' (length=13)
11 => string 'Maart 2018' (length=10)
array (size=8)
0 =>
object(stdClass)[81]
public 'label' => string 'April 2017' (length=10)
public 'vacyear' => string '2017' (length=4)
public 'vacmonth' => string '4' (length=1)
public 'totalsubscriptions' => string '2' (length=1)
1 =>
object(stdClass)[82]
public 'label' => string 'Oktober 2017' (length=12)
public 'vacyear' => string '2017' (length=4)
public 'vacmonth' => string '10' (length=2)
public 'totalsubscriptions' => string '5' (length=1)
2 =>
object(stdClass)[83]
public 'label' => string 'November 2017' (length=13)
public 'vacyear' => string '2017' (length=4)
public 'vacmonth' => string '11' (length=2)
public 'totalsubscriptions' => string '1' (length=1)
3 =>
object(stdClass)[84]
public 'label' => string 'December 2017' (length=13)
public 'vacyear' => string '2017' (length=4)
public 'vacmonth' => string '12' (length=2)
public 'totalsubscriptions' => string '13' (length=2)
4 =>
object(stdClass)[85]
public 'label' => string 'Januari 2018' (length=12)
public 'vacyear' => string '2018' (length=4)
public 'vacmonth' => string '1' (length=1)
public 'totalsubscriptions' => string '14' (length=2)
5 =>
object(stdClass)[86]
public 'label' => string 'Februari 2018' (length=13)
public 'vacyear' => string '2018' (length=4)
public 'vacmonth' => string '2' (length=1)
public 'totalsubscriptions' => string '31' (length=2)
6 =>
object(stdClass)[87]
public 'label' => string 'Maart 2018' (length=10)
public 'vacyear' => string '2018' (length=4)
public 'vacmonth' => string '3' (length=1)
public 'totalsubscriptions' => string '4' (length=1)
7 =>
object(stdClass)[88]
public 'label' => string 'April 2018' (length=10)
public 'vacyear' => string '2018' (length=4)
public 'vacmonth' => string '4' (length=1)
public 'totalsubscriptions' => string '5' (length=1)
Первый массив - $past12months
, и он всегда содержит ровно 12 элементов (каждый месяц в течение последних 12 месяцев).
Второй массив $orgvacssubscrmonth
извлекается из mysql и содержит массив объектов с меткой (это соответствует точной записи в массиве $past12months
.
Мне нужно объединить эти массивы, чтобы создать результат, который выглядит следующим образом:
array (size=2)
'months' =>
array (size=12)
0 => string 'April 2017' (length=10)
1 => string 'Mei 2017' (length=8)
2 => string 'Juni 2017' (length=9)
3 => string 'Juli 2017' (length=9)
4 => string 'Augustus 2017' (length=13)
5 => string 'September 2017' (length=14)
6 => string 'Oktober 2017' (length=12)
7 => string 'November 2017' (length=13)
8 => string 'December 2017' (length=13)
9 => string 'Januari 2018' (length=12)
10 => string 'Februari 2018' (length=13)
11 => string 'Maart 2018' (length=10)
'amounts' =>
array (size=12)
0 => string '2' (length=1)
1 => int 0
2 => int 0
3 => int 0
4 => int 0
5 => int 0
6 => string '5' (length=1)
7 => string '1' (length=1)
8 => string '13' (length=2)
9 => string '14' (length=2)
10 => string '31' (length=2)
11 => string '4' (length=1)
Это код, который у меня есть:
foreach ($past12months as $month) {
if(!in_array($month, $past12monthsfulldata['months'], true)){
array_push($past12monthsfulldata['months'], $month);
foreach ($orgvacssubscrmonth as $entry) {
if ($entry->label == $month) {
array_push($past12monthsfulldata['amounts'], $entry->totalsubscriptions);
break;
} else {
array_push($past12monthsfulldata['amounts'], 0);
break;
}
}
}
}
Это создает результат, подобный приведенному ниже (я полагаю, что из-за перерыва, но если я удаляю их, я получаю массив значений, состоящий из элементов 12x6):
array (size=2)
'months' =>
array (size=12)
0 => string 'April 2017' (length=10)
1 => string 'Mei 2017' (length=8)
2 => string 'Juni 2017' (length=9)
3 => string 'Juli 2017' (length=9)
4 => string 'Augustus 2017' (length=13)
5 => string 'September 2017' (length=14)
6 => string 'Oktober 2017' (length=12)
7 => string 'November 2017' (length=13)
8 => string 'December 2017' (length=13)
9 => string 'Januari 2018' (length=12)
10 => string 'Februari 2018' (length=13)
11 => string 'Maart 2018' (length=10)
'amounts' =>
array (size=12)
0 => string '2' (length=1)
1 => int 0
2 => int 0
3 => int 0
4 => int 0
5 => int 0
6 => int 0
7 => int 0
8 => int 0
9 => int 0
10 => int 0
11 => int 0