2017-03-15 3 views
0

Ich versuche mehrere Arrays nach Zeitwerten zu kombinieren. Ich habe ein Array wie folgt.Laravel - Mehrere Arrays nach Werten kombinieren

[ 
    { 
     x:"Kasa", 
     y:" 8", 
     id:6, 
     a:0.019444444444444 
    }, 
    { 
     x:"Kasa", 
     y:" 9", 
     id:6, 
     a:0.023611111111111 
    }, 
    { 
     x:"Kasa", 
     y:"10", 
     id:6, 
     a:0.018055555555556 
    }, 
    { 
     x:"Kasa", 
     y:"11", 
     id:6, 
     a:0.025 
    }, 
    { 
     x:"Kasa", 
     y:"12", 
     id:6, 
     a:0.0097222222222222 
    } 
], 
[ 
    { 
     x:"Kasap", 
     y:" 8", 
     id:7, 
     a:0.0013888888888889 
    }, 
    { 
     x:"Kasap", 
     y:" 9", 
     id:7, 
     a:0.015277777777778 
    }, 
    { 
     x:"Kasap", 
     y:"10", 
     id:7, 
     a:0.0027777777777778 
    }, 
    { 
     x:"Kasap", 
     y:"11", 
     id:7, 
     a:0.0041666666666667 
    }, 
    { 
     x:"Kasap", 
     y:"12", 
     id:7, 
     a:0.019444444444444 
    } 
] 

Ich brauche die Kombination dieser 2 Array mit y-Werten. Zum Beispiel nach dem Kombinieren sollten die Arrays so sein.

[ 
    { 
     x:"Kasa", 
     y:" 8", 
     id:6, 
     a:0.019444444444444 
    }, 
    { 
     x:"Kasap", 
     y:" 8", 
     id:7, 
     a:0.0013888888888889 
    } 
], 
[ 
    { 
     x:"Kasa", 
     y:"11", 
     id:6, 
     a:0.025 
    }, 
    { 
     x:"Kasap", 
     y:"11", 
     id:7, 
     a:0.0041666666666667 
    } 
], 
[ 
    { 
     x:"Kasa", 
     y:"12", 
     id:6, 
     a:0.0097222222222222 
    }, 
    { 
     x:"Kasap", 
     y:"12", 
     id:7, 
     a:0.019444444444444 
    } 
], 
[ 
    { 
     x:"Kasa", 
     y:" 9", 
     id:6, 
     a:0.023611111111111 
    }, 
    { 
     x:"Kasap", 
     y:" 9", 
     id:7, 
     a:0.015277777777778 
    } 
], 
[ 
    { 
     x:"Kasap", 
     y:"10", 
     id:7, 
     a:0.0027777777777778 
    }, 
    { 
     x:"Kasa", 
     y:"10", 
     id:6, 
     a:0.018055555555556 
    } 
] 

Was soll ich für diesen Fall tun?

+0

Format Code, fügen Sie Ihre Testversion gebaut! – Thamilan

+0

bereits bearbeitet, aber die Stimme abzugeben, um etwas zu fragen, ist nicht normal –

+0

Nein ist nicht meins! – Thamilan

Antwort

3

Da Sie diese Frage "Laravel" sind Taggen Sie die hervorragende Collection verwenden könnte Klasse:

collect($array)->flatten(1)->groupBy('y')->toArray() 
+0

Das hat funktioniert Danke :) –

0

Versuchen Sie folgendes: Ich habe es mit diesem Array getestet

array:3 [▼ 
    0 => array:2 [▼ 
    "x" => "Kasaa" 
    "y" => "8" 
    ] 
    1 => array:2 [▼ 
    "x" => "Pasa" 
    "y" => "9" 
    ] 
    2 => array:2 [▼ 
    "x" => "tasa" 
    "y" => "8" 
    ] 
] 

EDIT

$array= array_merge($array1, $array2); 
    foreach ($array as $k => $value) { 

     foreach ($value as $key => $v) { 
      if ($key === 'y'){ 
      $result[$v]=''; 
      } 
     } 
    } 
    foreach ($array as $k => $value) { 
     if ($value['y'] == key_exists($value['y'],$result)) { 
      $result[$value['y']][$k]= $value; 

     } 
    } 
+0

Noch das gleiche jetzt nur Sortieren nach –

+0

in Ordnung, versuchen Sie es jetzt. Sie werden alles in $ Ergebnis haben. – Onix

+0

Nun bekomme ich eine ungültige Offset-Fehler –

0

Try php in array_merge_recursive() Funktion

$array = array_merge_recursive($array1, $array2); 
or make your own function (it may be faster) 
function my_array_merge(&$array1, &$array2) { 
    $result = Array(); 
    foreach($array1 as $key => &$value) { 
     $result[$key] = array_merge($value, $array2[$key]); 
    } 
    return $result; 
} 
$array = my_array_merge($array1, array2); 
print_r($array); 
Verwandte Themen