2017-03-15 103 views
0

我试图按时间值组合多个数组。 我有一个这样的数组。Laravel - 按值组合多个数组

[ 
    { 
     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 
    } 
] 

我需要联合这2个数组与y值。例如结合后的数组应该是这样的。

[ 
    { 
     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 
    } 
] 

该怎么办?

+0

格式的代码,添加您的试用! – Thamilan

+0

已编辑,但放弃投票要求的东西不正常 –

+0

不,它不是我的! – Thamilan

回答

3

既然你标记这个问题 “Laravel”,你可以使用优秀的Collection等级:

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

这工作谢谢:) –

0

试试这个: 我与这个阵列测试它

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

编辑

$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

现在只需按降序排列 –

+0

现在就试试吧。你将会在'$ result'中得到所有东西 – Onix

+0

现在我得到非法偏移类型错误 –

0

地尝试一下PHP内置array_merge_recursive()函数

$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);