Crear una matriz de otra matriz en php

Tengo una matriz que se parece a esto. Esta es una matriz bidimensional.

$MainArray = Array ( [0] => Array ( [Job_Name] => WXYZ [Quantity] => 1000 [Machine_Name] => Machine1 [Start_Date] => 2014-07-30 00:00:00 [Completion_Date] => 2014-08-02 00:00:00 [Labor] => 4 ) [1] => Array ( [Job_Name] => ABCD [Quantity] => 1500 [Machine_Name] => Machine2 [Start_Date] => 2014-08-08 00:00:00 [Completion_Date] => 2014-08-14 00:00:00 [Labor] => 2 ) [2] => Array ( [Job_Name] => BCDA [Quantity] => 1200 [Machine_Name] => Machine1 [Start_Date] => 2014-08-02 00:00:00 [Completion_Date] => 2014-08-07 00:00:00 [Labor] => 1 ) ) 

Quiero utilizar esta información para crear una nueva matriz tridimensional que se vea así.

 $ConvertedArray = Array ( [Machine1] => Array ( [0] => Array ( [Job_Name] => WXYZ [Quantity] => 1000 [Start_Date] => 2014-07-30 00:00:00 [Completion_Date] => 2014-08-02 00:00:00 [Labor] => 4 ) [1] => Array ( [Job_Name] => BCDA [Quantity] => 1200 [Start_Date] => 2014-08-02 00:00:00 [Completion_Date] => 2014-08-07 00:00:00 [Labor] => 1 ) ) [Machine2] => Array ( [0] => Array ( [Job_Name] => ABCD [Quantity] => 1500 [Machine_Name] => Machine2 [Start_Date] => 2014-08-08 00:00:00 [Completion_Date] => 2014-08-14 00:00:00 [Labor] => 2 ) ) ) 

Por favor, cualquier ayuda en esto sería apreciada. Estoy atascado con algo y necesito descubrir cómo crear la nueva matriz usando esta matriz original. Básicamente, estoy agrupando todos los trabajos de cada máquina y las claves para esos trabajos dependen de cómo están en la matriz original. Entonces, si la matriz original tiene un trabajo con la clave 2 y ningún otro trabajo tiene una clave más alta en esa máquina, se convertirá en la clave 0 para ese trabajo y creará una nueva clave con ese nombre de máquina.

Realmente aprecio tu ayuda en esto.

 foreach ($MainArray as $value) { $name = $value['Machine_Name']; unset($value['Machine_Name']); $ConvertedArray[$name][] = $value; } 

Use el siguiente código: –

 $result = []; foreach($MainArray as $record){ $result[$record['Machine_Name']][] = $record; } echo '
'; print_r($result);

salida:-

 Array ( [Machine1] => Array ( [0] => Array ( [Job_Name] => WXYZ [Quantity] => 1000 [Start_Date] => 2014-07-30 00:00:00 [Completion_Date] => 2014-08-02 00:00:00 [Labor] => 4 ) [1] => Array ( [Job_Name] => BCDA [Quantity] => 1200 [Start_Date] => 2014-08-02 00:00:00 [Completion_Date] => 2014-08-07 00:00:00 [Labor] => 1 ) ) [Machine2] => Array ( [0] => Array ( [Job_Name] => ABCD [Quantity] => 1500 [Machine_Name] => Machine2 [Start_Date] => 2014-08-08 00:00:00 [Completion_Date] => 2014-08-14 00:00:00 [Labor] => 2 ) ) )