我不熟悉PHP,我很难理解PHP中的数组。 我有一些问题要解决,我编写简单的JAVA类来解决它,但我需要它在PHP中。有人可以帮我将下面的代码转换为PHP吗?
Java代码:
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: 1 = 22
i: 1 = 33
i: 2 = 44
i: 2 = 55
i: 3 = 66
i: 1 = 77
我需要它按键分组元素。 这是输出:
i: 1 = 22 33 77
i: 2 = 44 55
i: 3 = 66
在JAVA中,它按预期工作,但在PHP中我无法编写它,尽管我阅读了一些教程,手册和示例。
[编辑]: 真正的问题是: 我有一个包含N行的excel文件(正在加载excel)。 每行有2列。
我想像这样分组:
在这种情况下:
答案 0 :(得分:1)
必须更改输入数据的格式,因为在PHP中,键必须是唯一的。我测试了这段代码:(它比JAVA简单得多) (因此输入是关联数组的数组。)
<?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);
结果:
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
)
)