Объединение одинаковых значений в многомерном массиве
Есть массив вида
array:211 [▼
0 => array:18 [▼
0 => "2Ц2-0"
1 => null
2 => null
3 => null
4 => null
5 => null
6 => null
7 => "1"
8 => null
9 => null
10 => null
11 => null
12 => null
13 => null
14 => null
15 => null
16 => null
17 => null
]
1 => array:18 [▼
0 => "2Ц2-160Н"
1 => "1"
2 => null
3 => null
4 => null
5 => null
6 => null
7 => null
8 => null
9 => null
10 => null
11 => null
12 => null
13 => null
14 => null
15 => null
16 => null
17 => null
]
2 => array:18 [▼
0 => "2Ц2-160Н"
1 => null
2 => null
3 => null
4 => null
5 => null
6 => null
7 => "1"
8 => null
9 => null
10 => null
11 => null
12 => null
13 => null
14 => null
15 => null
16 => null
17 => null
]
]
Нужно пройтись по массиву и привести его к виду
array:211 [▼
0 => array:18 [▼
0 => "2Ц2-0"
1 => null
2 => null
3 => null
4 => null
5 => null
6 => null
7 => "1"
8 => null
9 => null
10 => null
11 => null
12 => null
13 => null
14 => null
15 => null
16 => null
17 => null
]
1 => array:18 [▼
0 => "2Ц2-160Н"
1 => "1"
2 => null
3 => null
4 => null
5 => null
6 => null
7 => "1"
8 => null
9 => null
10 => null
11 => null
12 => null
13 => null
14 => null
15 => null
16 => null
17 => null
]
]
Ответы (1 шт):
Автор решения: E_K
→ Ссылка
Пройтись в циклах по массивам и объединить значения в новом.
$arr = [
[
0 => 'First',
1 => null,
2 => 'Value 1.2',
],
[
0 => 'Second',
1 => 'Value 2.1',
2 => null,
3 => null,
],
[
0 => 'Second',
1 => null,
2 => 'Value 3.2',
3 => 'Value 3.3',
],
];
$result = [];
foreach ( $arr as $subArr ) {
$key = $subArr[0];
if ( ! isset( $result[ $key ] ) ) {
$result[ $key ] = $subArr;
continue;
}
foreach ( $subArr as $k => $v ) {
$result[ $key ][ $k ] = $v ?: $result[ $key ][ $k ];
}
}
Результат
Array
(
[First] => Array
(
[0] => First
[1] =>
[2] => Value 1.2
)
[Second] => Array
(
[0] => Second
[1] => Value 2.1
[2] => Value 3.2
[3] => Value 3.3
)
)