我有一个看起来像这样的数组。这是2维数组。
$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,并使用该机器名创建一个新键。
非常感谢您的帮助。
#1 楼
foreach ($MainArray as $value) {
$name = $value['Machine_Name'];
unset($value['Machine_Name']);
$ConvertedArray[$name][] = $value;
}
#2 楼
请使用以下代码:-$result = [];
foreach($MainArray as $record){
$result[$record['Machine_Name']][] = $record;
}
评论
这个无法解释的代码片段正在向fib告知其输出。想知道我如何可以说您只是复制了OP的问题正文中的输出吗? Machine_Name仅位于最后一个子数组的数据中。
– mickmackusa
12月14日6:36
@mickmackusa:感谢您指出。在4年前回答了这个问题,所以不完全是这个主意,是的,缺少Machine_Name键。刚刚删除了输出。我认为OP只是想根据Machine_Name区分数据。
–拉维·希拉尼(Ravi Hirani)
12月14日9:04
现在,您只需要在代码段中附带说明即可。我使用旧页面来关闭新的重复页面,但是由于1.问题不是100%清晰,并且2.没有解释答案,因此我无法满怀信心地使用此页面来教育用户。
– mickmackusa
12月14日9:14
评论
您想根据需要获得特定输出的内容..!@Mav我们如何知道哪些子数组应在输出中保留Machine_Name元素?看看Machine1子数组如何不包含Machine_Name元素,而Machine2子数组如何呢?这使您的问题成为不清楚的“需求转储”。
副本:stackoverflow.com/q/12706359/2943403
这回答了你的问题了吗?如何按列值对子数组进行分组?