2017-01-05 3 views
0

Ich bin nicht vertraut mit PHP, und es ist schwer für mich, Arrays in PHP zu verstehen. Ich habe ein Problem zu lösen, und ich schreibe einfache JAVA-Klasse, um es zu lösen, aber ich brauche es in PHP. Könnte mir jemand helfen, diesen Code unter PHP zu konvertieren?Einfache Java-Code in PHP (Arrays) konvertieren

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(); 
     } 
    } 

Ich habe Eingabetabelle:

i: 1 = 22 
i: 1 = 33 
i: 2 = 44 
i: 2 = 55 
i: 3 = 66 
i: 1 = 77 

und ich brauche es zu Gruppenelemente durch Schlüssel. Dies ist Ausgabe:

i: 1 = 22 33 77 
i: 2 = 44 55 
i: 3 = 66 

In JAVA es funktioniert wie erwartet, aber in PHP Ich bin nicht in der Lage, es zu schreiben, obwohl ich einige Tutorials, Anleitungen und Beispiele lesen.

[EDIT]: Das eigentliche Problem ist: Ich habe eine Excel-Datei mit N Zeilen (loading Excel ist implementiert). Jede Zeile hat 2 Spalten.

enter image description here

ich gruppieren mag es so:

    :

    • Daten aus der Spalte B sollten von Wert aus Spalte A.

    In diesem Fall gruppiert werden

  • für Wert 1 wird es 123, 63, 3 (Zeilen 1, 2 und 6)
  • für 2-Wert wird es 3 ist, 23 (Zeilen 3 und 4)
  • für Wert 3 wird 55 sein, 234 (Zeilen 5 und 7)
+1

Schwer zu sagen, ob es eine ist Duplikat. Ich weiß, dass eine automatische Konvertierung nicht möglich ist. Ich brauche Hilfe, um in PHP über die in JAVA implementierte Logik zu schreiben, – DarSta

+0

Wahrscheinlich hast du recht, sorry. – DimaSan

Antwort

1

Das Format der Eingangsdaten müssen geändert, weil in PHP die Schlüssel eindeutig sein müssen. Ich habe diesen Code getestet: (es ist viel einfacher als in JAVA) (also der Eingang ist ein Array von assoziativen 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); 

Ergebnisse:

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 
     ) 

) 
+0

Tatsächlich habe ich in JAVA xls im Format geparst: 'row1, row2, .., rowN'. Jede Zeile hat Spalten: Spalte1, Spalte2. Spalten sind nicht eindeutig. Ich werde in deinen Code schauen. Vielen Dank. – DarSta