【发布时间】:2016-07-18 19:16:18
【问题描述】:
虽然这看起来很简单,但我已经为这个案子苦苦挣扎了好几天,一直没能找到解决办法。我用以下几行来解释它:
我有什么
我有两个数组:一个具有 categories 的顺序,另一个具有这些 categories 的值。如下:
$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 是 order 数组中的第一个,我需要获取类别 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
}
]
}
]
我尝试过的
我无法编写我尝试过的所有方法,但我似乎找不到合适的解决方案。
我尝试过递归函数(我认为这是实现此功能的正确方法),但我能得到的只是 'Stack call exceeded' 之类的错误。
声明
数据源是开放的,因此适合更改。但是,我想保持这种方式,因为这种结构对未来有影响——尽管如果有必要,它们也可以改变。
【问题讨论】:
-
我不太了解“我需要什么”部分下的
$result对象。$orders如何翻译成$result?我什至没有看到第 8 类。 -
我已经编辑了这个问题(在我有什么下),所以它更清楚。感谢您抽出宝贵时间,很抱歉让您感到困惑。