Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个数组之间的多维数组组合_Php_Arrays_Multidimensional Array_Combinations - Fatal编程技术网

Php 两个数组之间的多维数组组合

Php 两个数组之间的多维数组组合,php,arrays,multidimensional-array,combinations,Php,Arrays,Multidimensional Array,Combinations,我正在做一个用PHP编写的项目,它本质上是一个网络商店,我需要生成一些XML来显示哪些产品在销售 现在,每个产品本身都可以有所谓的属性,比如高度、颜色、形状等,每个属性都可以有自己的属性,比如高度。高度可以是120厘米、150厘米、180厘米等 可以有多少个属性或可以有多少个可能的属性没有限制 那么,如何找到SEE 2阵列之间的所有组合 下面是一个真正精简的产品json示例: 让我们把这个数组称为解码后的$products { { "product_id":"1",

我正在做一个用PHP编写的项目,它本质上是一个网络商店,我需要生成一些XML来显示哪些产品在销售

现在,每个产品本身都可以有所谓的属性,比如高度、颜色、形状等,每个属性都可以有自己的属性,比如高度。高度可以是120厘米、150厘米、180厘米等

可以有多少个属性或可以有多少个可能的属性没有限制

那么,如何找到SEE 2阵列之间的所有组合

下面是一个真正精简的产品json示例: 让我们把这个数组称为解码后的$products

{
    {
        "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阵列之间的所有组合呢?”如果算法背后的逻辑是以最适合您的方式实现的,我认为这会有所帮助。