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

标签 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 行)

最佳答案

必须更改输入数据的格式,因为在 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
        )

)

关于java - 将简单的 JAVA 代码转换为 PHP(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486445/

相关文章:

java - 小行星类游戏中的正确运动

php - 使用php从一个复杂的数组中放入表

php - 具有扩展 PDOStatement 的 PDO 在设置 NULL 时无法断开连接

javascript - 包含具有 "ing"的字符串的过滤器数组?

javascript - 将数据从嵌套数组转换为对象

java - 迭代excel值并与txt文件值匹配

java - 将 Elasticsearch 升级到 5.6.3

javascript - JSP - Javascript,根据选择选项值更新表字段

php - 是否有可能获得函数的静态值?

javascript - 如何检查数组是否包含特定对象