シンプルに見えるかもしれませんが、私はこのケースで数日間苦労しており、解決策を見つけることができませんでした。私は、次の行にそれを説明する:PHP - 再帰的なサブカテゴリの追加
私が持っているもの
私は2つのアレイ持っている:カテゴリの順序とそれらのカテゴリの値を持つ別の1のものを。何かが次のように:あなたが見ることができるように
$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まで、実際には)多くをすることができます。
EDIT
result
と他の変数との関係は、あなたが見ることができるように、カテゴリ3が初であるとして、カテゴリー3は、そうid
1、2と3を使用して値を持っている、ということですorder
配列では、カテゴリ3のすべてのカテゴリを取得する必要があります。
したがって、説明サンプルとして、カテゴリ3.1(および3.2と3.3)にはサブカテゴリ8.6と8.7が含まれている必要があります。
は私が
を必要とする私は順序を考慮に入れて、彼らは以前の1のそれぞれをサブカテゴリにする必要があります。したがって、順序が最初のカテゴリ番号3であり、カテゴリ番号8である場合、カテゴリ3のすべての値の内側にある必要があります(カテゴリが追加された場合は、次のカテゴリの各値カテゴリ番号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
}
]
}
]
これに適した解決策を見つけてください。
私は再帰関数を試しました(これを実装する正しい方法だと思いますが)。'スタック呼び出しを超過しました'エラーのようなものです。
破棄
データソースは開いているので変更することができます。しかし、私はこの方法でこの方法をとっておきたいと思います。なぜなら、この構造には将来の意味があるからです。必要であれば、変更することもできます。
"私が必要なもの"の部分の '$ result'オブジェクトを実際に理解していません。 '$ orders'は' $ result'にどのように変換されますか?そこにはカテゴリ8も見えません。 – Mike
私は質問を編集しました(私が持っているものの下で)ので、それはより明確です。あなたの時間をありがとう、それを混乱させて申し訳ありません。 – Unapedra