У меня есть массив, который выглядит так. Это двумерный массив.
$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 ) )
Я хочу использовать эту информацию для создания нового 3-мерного массива, который выглядит так.
$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 ) ) )
Пожалуйста, любая помощь по этому поводу будет оценена по достоинству. Я застрял в чем-то и должен выяснить, как создать новый массив с использованием этого исходного массива. Поэтому в основном я группирую все задания с каждой машины вместе, а ключи для этих заданий зависят от того, как они находятся в исходном массиве. Поэтому, если исходный массив имеет задание с ключом 2, и никакое другое задание не имеет более высокого ключа на этом компьютере, тогда он станет ключом 0 для этого задания и создаст новый ключ с этим именем машины.
Я очень ценю вашу помощь в этом.
foreach ($MainArray as $value) { $name = $value['Machine_Name']; unset($value['Machine_Name']); $ConvertedArray[$name][] = $value; }
сforeach ($MainArray as $value) { $name = $value['Machine_Name']; unset($value['Machine_Name']); $ConvertedArray[$name][] = $value; }
Используйте нижеприведенный код: –
$result = []; foreach($MainArray as $record){ $result[$record['Machine_Name']][] = $record; } echo '<pre>'; print_r($result);
вывод:-
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 ) ) )