'Combine two arrays with same size, different indexes php arrays
I'm stuck, I have two arrays with the same size, but with different indices, something like this:
Array 1:
array (size=47)
2 =>
array (size=5)
0 => int 130
1 => int 28
2 => int 1
3 => int 1
4 => int 6
3 =>
array (size=5)
0 => int 52
1 => int 2
2 => int 3
3 => int 3
4 => int 27
4 =>
array (size=5)
0 => int 85
1 => int 10
2 => int 5
3 => int 3
4 => int 39
5 =>
array (size=5)
0 => int 94
1 => int 5
2 => int 4
3 => int 2
4 => int 16
6 =>
array (size=5)
0 => int 41
1 => int 1
2 => int 0
3 => int 4
4 => int 21
7 =>
array (size=5)
0 => int 127
1 => int 6
2 => int 8
3 => int 16
4 => int 39
8 =>
array (size=5)
0 => int 118
1 => int 3
2 => int 5
3 => int 1
4 => int 2
9 =>
array (size=5)
0 => int 35
1 => int 1
2 => int 2
3 => int 0
4 => int 1
10 =>
array (size=5)
0 => int 76
1 => int 8
2 => int 11
3 => int 6
4 => int 45
11 =>
array (size=5)
0 => int 65
1 => int 17
2 => int 16
3 => int 13
4 => int 59
13 =>
array (size=5)
0 => int 41
1 => int 20
2 => int 27
3 => int 13
4 => int 37
14 =>
array (size=5)
0 => int 111
1 => int 7
2 => int 4
3 => int 6
4 => int 28
15 =>
array (size=5)
0 => int 23
1 => int 3
2 => int 2
3 => int 3
4 => int 9
16 =>
array (size=5)
0 => int 22
1 => int 5
2 => int 5
3 => int 5
4 => int 18
17 =>
array (size=5)
0 => int 185
1 => int 98
2 => int 13
3 => int 5
4 => int 5
19 =>
array (size=5)
0 => int 1
1 => int 1
2 => int 0
3 => int 0
4 => int 7
20 =>
array (size=5)
0 => int 150
1 => int 11
2 => int 2
3 => int 1
4 => int 56
21 =>
array (size=5)
0 => int 191
1 => int 6
2 => int 9
3 => int 16
4 => int 62
22 =>
array (size=5)
0 => int 18
1 => int 3
2 => int 1
3 => int 0
4 => int 1
23 =>
array (size=5)
0 => int 24
1 => int 0
2 => int 0
3 => int 2
4 => int 5
25 =>
array (size=5)
0 => int 1
1 => int 0
2 => int 0
3 => int 0
4 => int 1
27 =>
array (size=5)
0 => int 17
1 => int 2
2 => int 1
3 => int 1
4 => int 5
28 =>
array (size=5)
0 => int 21
1 => int 5
2 => int 0
3 => int 1
4 => int 2
29 =>
array (size=5)
0 => int 15
1 => int 3
2 => int 3
3 => int 4
4 => int 40
30 =>
array (size=5)
0 => int 20
1 => int 2
2 => int 6
3 => int 5
4 => int 14
31 =>
array (size=5)
0 => int 6
1 => int 0
2 => int 1
3 => int 0
4 => int 10
32 =>
array (size=5)
0 => int 26
1 => int 8
2 => int 10
3 => int 4
4 => int 8
33 =>
array (size=5)
0 => int 7
1 => int 1
2 => int 0
3 => int 1
4 => int 18
35 =>
array (size=5)
0 => int 5
1 => int 3
2 => int 1
3 => int 0
4 => int 1
36 =>
array (size=5)
0 => int 6
1 => int 0
2 => int 1
3 => int 0
4 => int 4
37 =>
array (size=5)
0 => int 36
1 => int 3
2 => int 2
3 => int 0
4 => int 0
38 =>
array (size=5)
0 => int 25
1 => int 7
2 => int 0
3 => int 1
4 => int 9
39 =>
array (size=5)
0 => int 12
1 => int 1
2 => int 1
3 => int 0
4 => int 12
41 =>
array (size=5)
0 => int 82
1 => int 6
2 => int 1
3 => int 1
4 => int 11
44 =>
array (size=5)
0 => int 13
1 => int 10
2 => int 19
3 => int 14
4 => int 16
45 =>
array (size=5)
0 => int 24
1 => int 1
2 => int 2
3 => int 3
4 => int 4
46 =>
array (size=5)
0 => int 9
1 => int 2
2 => int 0
3 => int 1
4 => int 1
49 =>
array (size=5)
0 => int 45
1 => int 10
2 => int 15
3 => int 15
4 => int 57
50 =>
array (size=5)
0 => int 8
1 => int 2
2 => int 2
3 => int 2
4 => int 12
52 =>
array (size=5)
0 => int 68
1 => int 5
2 => int 2
3 => int 4
4 => int 16
54 =>
array (size=5)
0 => int 11
1 => int 4
2 => int 0
3 => int 1
4 => int 6
55 =>
array (size=5)
0 => int 1
1 => int 0
2 => int 0
3 => int 0
4 => int 3
56 =>
array (size=5)
0 => int 35
1 => int 0
2 => int 0
3 => int 1
4 => int 4
57 =>
array (size=5)
0 => int 21
1 => int 1
2 => int 2
3 => int 0
4 => int 1
58 =>
array (size=5)
0 => int 2
1 => int 1
2 => int 1
3 => int 1
4 => int 11
60 =>
array (size=5)
0 => int 100
1 => int 12
2 => int 2
3 => int 0
4 => int 5
61 =>
array (size=5)
0 => int 75
1 => int 6
2 => int 12
3 => int 19
4 => int 35
Array2:
array (size=47)
0 => float 5
1 => float 38
2 => float 33
3 => float 18
4 => float 37
5 => float 32
6 => float 6
7 => float 8
8 => float 42
9 => float 52
10 => float 56
11 => float 24
12 => float 35
13 => float 51
14 => float 8
15 => float 78
16 => float 27
17 => float 31
18 => float 9
19 => float 23
20 => float 50
21 => float 27
22 => float 10
23 => float 72
24 => float 53
25 => float 65
26 => float 39
27 => float 70
28 => float 20
29 => float 45
30 => float 5
31 => float 24
32 => float 50
33 => float 13
34 => float 68
35 => float 26
36 => float 15
37 => float 61
38 => float 62
39 => float 23
40 => float 32
41 => float 75
42 => float 13
43 => float 12
44 => float 81
45 => float 6
46 => float 45
As it should be: I would like to keep the same indices of array 1, however it is not mandatory.
array (size=47)
2 =>
array (size=6)
0 => int 130
1 => int 28
2 => int 1
3 => int 1
4 => int 6
5 => float 5
3 =>
array (size=6)
0 => int 52
1 => int 2
2 => int 3
3 => int 3
4 => int 27
5 => float 38
4 =>
array (size=6)
0 => int 85
1 => int 10
2 => int 5
3 => int 3
4 => int 39
5 => float 33
5 =>
array (size=6)
0 => int 94
1 => int 5
2 => int 4
3 => int 2
4 => int 16
5 => float 18
6 =>
array (size=6)
0 => int 41
1 => int 1
2 => int 0
3 => int 4
4 => int 21
5 => float 37
7 =>
array (size=6)
0 => int 127
1 => int 6
2 => int 8
3 => int 16
4 => int 39
5 => float 32
8 =>
array (size=6)
0 => int 118
1 => int 3
2 => int 5
3 => int 1
4 => int 2
5 => float 6
9 =>
array (size=6)
0 => int 35
1 => int 1
2 => int 2
3 => int 0
4 => int 1
5 => float 8
I have tried these methods, but none of them work as they are different indicex
$final = [];
foreach ($array1 as $idx => $val) {
$final = [$val, $array2[$idx]];
}
Another:
foreach ($array1 as $index => $subArray) {
$array1 [$index][] = $array2[$index];
}
Does anyone know any better?
NOTE: Only in array2 they are from 0 to 46 indices, but in array1 it starts from 2 to 11, then 13 to 17, 19 to 23, then 25, then 27 to 33, 35 to 39, then 41 appears alone, to start from 44 to 46, in conclusion it has no even order, odd order, nothing, it is random.
NOTE 2: In other words, it would look like this: At the first index of the first array insert the first index of the second array. At the second index of the first array insert the second index of the second array. INDEPENDENTLY OF THE NUMBER you have as index for the second array
Solution 1:[1]
An example using foreach
<?php
$a = [
2 => [130, 28, 1, 1, 6],
3 => [52, 2, 3, 3, 27]
];
$b = [5, 38];
$output = [];
$idx = 0;
foreach ($a as $key => $value) {
$value[] = $b[$idx];
$output[$key] = $value;
++$idx;
}
print_r($output);
Solution 2:[2]
You can loop $array1 using the foreach for the key $index and then add the item from $array2 where the keys start from 0.
You can check for the key first using array_key_exists just in case the number of items of $array2 is less than $array1
$array1 = [
2 => [130, 28, 1, 1, 6],
3 => [52, 2, 3, 3, 27],
13 => [1, 2, 3, 4, 5]
];
$array2 = [5, 38, 99, 100];
$counter = 0;
foreach ($array1 as $index => $subArray) {
if (array_key_exists($counter, $array2)) {
$array1[$index][] = $array2[$counter];
}
$counter++;
}
print_r($array1);
Output
Array
(
[2] => Array
(
[0] => 130
[1] => 28
[2] => 1
[3] => 1
[4] => 6
[5] => 5
)
[3] => Array
(
[0] => 52
[1] => 2
[2] => 3
[3] => 3
[4] => 27
[5] => 38
)
[13] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 99
)
)
See a PHP demo.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | ikhvjs |
| Solution 2 |
