虽然看起来很简单,但我一直在为这种情况挣扎几天,而我一直无法找到解决方案。我解释一下以下行:PHP - 递归添加子类
我有什么
我有两个数组:一个与类别的顺序和另一个与类别的值。东西如下:
$orders =
[
{
category: 3
},
{
category: 8
}
];
$values =
{
3: [
{
id: 1,
value: 'Value 1'
},
{
id: 2,
value: 'Value 2'
},
{
id: 3,
value: 'Value 3'
}
],
8: [
{
id: 6,
value: 'Value 6'
},
{
id: 7,
value: 'Value 7'
}
]
};
正如你所看到的,有2 类但他们可以更(事实上,其中最多10)。
编辑
result
和其他变量之间的关系是,你可以看到,3类有值与id
1,2和3。因此,随着第3类是在第一数组,我需要得到类别3中的每个类别。
因此,作为解释示例,类别3.1(以及3.2和3.3)应该有内部子类别8.6和8.7。
我需要什么
我需要让他们子类别的前一个的每一个,考虑到订单。因此,由于订单是第一类别3,然后是类别8,所以类别3的每个值必须包含在类别8的所有值内(等等,如果添加了更多类别,则下一类别的每个值将在8号类别下)。
所以我需要的是以下结果:
$result =
[
{
category: {id: 1}, // Category 3 first value
subcategories: [
{
category: {id: 6} // Category 8 first value
},
{
category: {id: 7} // Category 8 second value
}
]
},
{
category: {id: 2}, // Category 3 second value
subcategories: [
{
category: {id: 6} // Category 8 first value
},
{
category: {id: 7} // Category 8 second value
}
]
},
{
category: {id: 3}, // Category 3 third value
subcategories: [
{
category: {id: 6} // Category 8 first value
},
{
category: {id: 7} // Category 8 second value
}
]
}
]
我已经试过
我不会写,我已经试过了所有的办法,但我似乎无法到为此找到合适的解决方案。
我试过递归函数(我认为这是实现这个的正确方法),但我可以带来的是一个'堆栈调用超过'像错误。
Aclarations
数据来源已公开,因此很适合变更。但是,我想这样保持下去,因为这种结构对未来有影响 - 尽管如果有必要,它们也可以改变。
我不是很了解“我需要什么”部分下的'$ result'对象。 '$ orders'如何转换为'$ result'?那里我甚至没有看到类别8。 – Mike
我已经编辑了这个问题(在我所拥有的下),所以它更清晰。感谢您的时间,并感到抱歉让它变得如此混乱。 – Unapedra