I am not familiar with PHP, and it is hard for me to understand arrays in PHP. I have some problem to resolve, and I write simple JAVA class to resolve it, but I need it in PHP. Could some one help me to covert this below code to PHP?
Java code:
public static void main(String[] args) {
Map<Integer, List<Integer>> outputData = new HashMap<Integer,List<Integer>>();
int[][] inputData = new int[6][2];
inputData[0][0] = 1;
inputData[0][1] = 22;
inputData[1][0] = 1;
inputData[1][1] = 33;
inputData[2][0] = 2;
inputData[2][1] = 44;
inputData[3][0] = 2;
inputData[3][1] = 55;
inputData[4][0] = 3;
inputData[4][1] = 66;
inputData[5][0] = 1;
inputData[5][1] = 77;
// process input data
for(int i = 0;i<=5;i++){
if(outputData.containsKey(inputData[i][0])){
List<Integer> list = outputData.get(inputData[i][0]);
list.add(inputData[i][1]);
}else{
List<Integer> list = new ArrayList<Integer>();
list.add(inputData[i][1]);
outputData.put(inputData[i][0], list);
}
}
System.out.println("INPUT DATA DISPLAY");
for(int i = 0;i<=5;i++){
System.out.println("i: "+inputData[i][0] + " = "+inputData[i][1]);
}
System.out.println("OUTPUT MAP");
for(Integer i : outputData.keySet()){
List<Integer> l = outputData.get(i);
System.out.print("i: "+i+" = ");
for(Integer j : l){
System.out.print(j + " ");
}
System.out.println();
}
}
I have input table:
i: 1 = 22
i: 1 = 33
i: 2 = 44
i: 2 = 55
i: 3 = 66
i: 1 = 77
and I need it to group elements by key. This is output:
i: 1 = 22 33 77
i: 2 = 44 55
i: 3 = 66
In JAVA it is working as expected, but in PHP I am not able to write it, though I read some tutorials, manuals and examples.
[EDIT]: The real issue is: I have an excel file with N rows (loading excel is implemented). Every row have 2 columns.
I want to group it like this:
- data from column B should be grouped by value from column A.
In this case:
- for value 1 it will be 123, 63, 3 (rows 1, 2 and 6)
- for value 2 it will be 3, 23 (rows 3 and 4)
- for value 3 it will be 55, 234 (rows 5 and 7)
-
1Hard to say if it is an duplicate. I know that automatically convert is not possible. I need help to write in PHP above logic implemented in JAVA,DarSta– DarSta2017年01月05日 13:42:13 +00:00Commented Jan 5, 2017 at 13:42
-
Probably you're right, sorry.DimaSan– DimaSan2017年01月05日 13:44:10 +00:00Commented Jan 5, 2017 at 13:44
1 Answer 1
The format of the input data must be changed, because in PHP the keys must be unique. I have tested this code: (it is much simpler than in JAVA) (So the input is an array of associative arrays.)
<?php
function groupByKey($input) {
$result = array();
foreach($input as $item) {
foreach($item as $key => $value) {
$result[$key][] = $value;
}
}
return $result;
}
$data = array(
array(1 => 22),
array(1 => 33),
array(2 => 44),
array(2 => 55),
array(3 => 66),
array(1 => 77)
);
print_r($data);
echo "\n\n";
$result = groupByKey($data);
print_r($result);
Results:
Array
(
[0] => Array
(
[1] => 22
)
[1] => Array
(
[1] => 33
)
[2] => Array
(
[2] => 44
)
[3] => Array
(
[2] => 55
)
[4] => Array
(
[3] => 66
)
[5] => Array
(
[1] => 77
)
)
Array
(
[1] => Array
(
[0] => 22
[1] => 33
[2] => 77
)
[2] => Array
(
[0] => 44
[1] => 55
)
[3] => Array
(
[0] => 66
)
)