将简单的JAVA代码转换为PHP(数组)

时间:2017-01-05 13:33:21

标签: java php arrays

我不熟悉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列。

enter image description here

我想像这样分组:

  • B列的数据应按A列的值进行分组。

在这种情况下:

  • 对于值1,它将是123,63,3(第1,2和6行)
  • 对于值2,它将是3,23(第3行和第4行)
  • 对于值3,它将是55,234(第5行和第7行)

1 个答案:

答案 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
        )

)