在php中从另一个数组创建一个数组
我有一个像这样的数组。这是一个二维数组在php中从另一个数组创建一个数组,php,arrays,Php,Arrays,我有一个像这样的数组。这是一个二维数组 $MainArray = Array ( [0] => Array ( [Job_Name] => WXYZ [Quantity] => 1000 [Machine_Name] => Machine1 [Start_Date] => 2014-07-30 00:00:00 [Compl
$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
)
)
我想用这些信息创建一个新的三维数组,看起来像这样
$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;
}
$result = [];
foreach($MainArray as $record){
$result[$record['Machine_Name']][] = $record;
}
您试图获得想要的特定输出的内容@Mav我们如何知道哪些子阵列应该在输出中保留
Machine\u Name
元素?查看Machine1
子数组如何不包含Machine\u名称
元素,而Machine2
子数组如何包含?这使您的问题成为一个不明确的“需求转储”。重复:这是否回答了您的问题?这段无法解释的代码片段对它的输出撒了谎。想知道我怎么知道你只是从OP的问题主体复制了输出Machine\u Name
仅在最后一个子数组的数据中。@mickmackusa:感谢您指出这一点。4年前回答了,所以不完全是这个想法,但是是的机器名称钥匙不见了。只是删除了输出。我想OP只是想根据Machine\u Name
来区分数据。现在您只需要在代码片段中附带一个解释。我使用旧页面来关闭新的副本,但我不能很好地使用此页面来教育用户,因为1。这个问题不是100%清楚的。答案没有解释。