Php 两个数组之间的多维数组组合
我正在做一个用PHP编写的项目,它本质上是一个网络商店,我需要生成一些XML来显示哪些产品在销售 现在,每个产品本身都可以有所谓的属性,比如高度、颜色、形状等,每个属性都可以有自己的属性,比如高度。高度可以是120厘米、150厘米、180厘米等 可以有多少个属性或可以有多少个可能的属性没有限制 那么,如何找到SEE 2阵列之间的所有组合 下面是一个真正精简的产品json示例: 让我们把这个数组称为解码后的$productsPhp 两个数组之间的多维数组组合,php,arrays,multidimensional-array,combinations,Php,Arrays,Multidimensional Array,Combinations,我正在做一个用PHP编写的项目,它本质上是一个网络商店,我需要生成一些XML来显示哪些产品在销售 现在,每个产品本身都可以有所谓的属性,比如高度、颜色、形状等,每个属性都可以有自己的属性,比如高度。高度可以是120厘米、150厘米、180厘米等 可以有多少个属性或可以有多少个可能的属性没有限制 那么,如何找到SEE 2阵列之间的所有组合 下面是一个真正精简的产品json示例: 让我们把这个数组称为解码后的$products { { "product_id":"1",
{
{
"product_id":"1",
"product_name":"Blommebladet tj\u00f8rn",
"product_price":"400",
},
{
"product_id":"2",
"product_name":"Some other product",
"product_price":"300",
},
}
通过产品本身进行循环并不困难。但是,当循环遍历产品并获取属性时,它将返回一个新数组,其中包含产品及其属性的所有属性。那也相当容易
我需要系统生成一个新的产品列表,其中包含所有可能的产品组合,而不必考虑处理额外的数组。我想只是制作一个新的产品阵列,通过复制现有产品并在现有信息上添加属性/属性,将信息塞进这些产品中
属性/属性精简版。
此属性属于我的产品列表中的第一个产品
[{
"attribute_name": "H\u00f8jde",
"properties": {
"359": {
"property_name": "125 cm"
},
"356": {
"property_name": "150 cm"
},
"357": {
"property_name": "180 cm"
},
"358": {
"property_name": "220 cm"
}
}
}]
这是我希望发生的一个例子。
我想要一个新的数组,我们就叫它$variants吧
这应该只是复制基本产品,并添加额外的信息,使其成为新的“产品”。它仍然是相同的基础产品,因此无法更改id
名称应该更改为类似“Prod_name-[{Attr_name Prop_name},]”
例如比如:Blommebladet tj\u00f8rn-H\u00f8jde 125cm,
Blommebladet tj\u00f8rn-H\u00f8jde 150cm,
Blommebladet tj\u00f8rn-H\u00f8jde 160cm
希望你明白我的意思并帮助我!提前感谢。您应该寻找不重复地返回x值(您案例中的属性)的组合算法。 我可以为您提供这些,但是是用C编写的,您可能会发现它很有用,并用您喜欢的语言实现逻辑
#include <stdio.h>
#define MAXN 20
// Finds all combinations of n from k
const unsigned n = 5;
const unsigned k = 3;
unsigned mp[MAXN];
void print(unsigned length)
{
unsigned i;
for (i = 0; i < length; i++) printf("%u ", mp[i]);
printf("\n");
}
void comb(unsigned i, unsigned after)
{
unsigned j;
if (i > k) return;
for (j = after + 1; j <= n; j++) {
mp[i - 1] = j;
if (i == k) print(i);
comb(i + 1, j);
}
}
int main() {
printf("C(%u,%u): \n", n, k);
comb(1, 0);
return 0;
}
/* Results:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
*/
#包括
#定义最大值20
//从k中查找n的所有组合
常数无符号n=5;
常数无符号k=3;
无符号mp[MAXN];
无效打印(无符号长度)
{
未签名的i;
对于(i=0;ik)返回;
对于(j=after+1;j您应该寻找不重复地返回x值(在您的情况下是属性)的组合算法。
我可以为您提供这些,但是是用C编写的,您可能会发现它很有用,并用您喜欢的语言实现逻辑
#include <stdio.h>
#define MAXN 20
// Finds all combinations of n from k
const unsigned n = 5;
const unsigned k = 3;
unsigned mp[MAXN];
void print(unsigned length)
{
unsigned i;
for (i = 0; i < length; i++) printf("%u ", mp[i]);
printf("\n");
}
void comb(unsigned i, unsigned after)
{
unsigned j;
if (i > k) return;
for (j = after + 1; j <= n; j++) {
mp[i - 1] = j;
if (i == k) print(i);
comb(i + 1, j);
}
}
int main() {
printf("C(%u,%u): \n", n, k);
comb(1, 0);
return 0;
}
/* Results:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
*/
#包括
#定义最大值20
//从k中查找n的所有组合
常数无符号n=5;
常数无符号k=3;
无符号mp[MAXN];
无效打印(无符号长度)
{
未签名的i;
对于(i=0;ik)返回;
对于(j=after+1;j您如何知道属性属于哪个产品id/product\u名称?产品和属性是一组对象,我如何获取它们并不那么重要。这种逻辑正在幕后处理。它更多的是一个示例,让您知道我拥有什么样的数组等。重要的是每个产品都可以有自己的数组有属性的属性,ofc有时一个产品根本没有属性。你怎么知道属性属于哪个产品id/产品名称?产品和属性是一组对象,我如何获取它们并不重要。这种逻辑是在幕后处理的。它更像是一个例子,让你知道t数组等。我有。重要的是,每个产品都可以有自己的属性,有时一个产品根本没有属性。“那么,我如何找到这两个数组之间的所有组合?”如果算法背后的逻辑是以最适合你的方式实现的,我认为它会有所帮助。“那么,我如何找到SEE 2阵列之间的所有组合呢?”如果算法背后的逻辑是以最适合您的方式实现的,我认为这会有所帮助。