Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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_Sql_Arrays_Sorting - Fatal编程技术网

从多个数组中获取项目的每个组合-PHP

从多个数组中获取项目的每个组合-PHP,php,sql,arrays,sorting,Php,Sql,Arrays,Sorting,我已经创建了一个电子商务网站,并正在努力扩展它。以前,每个产品都可以有一个属性,例如颜色,因此当用户选择产品时,他们可以选择自己喜欢的颜色 我现在尝试为每个产品添加多个属性,例如颜色和大小 然而,产品的每一个变体都有不同的定价,因此我试图找出如何在后端进行定价 不幸的是,我不能真正展示我所有的代码,因为还有很多额外的东西不适合这个问题,比如供应商给我们不同货币和汇率的成本价格等等 主要问题是,当我选择产品时,应用的属性在一个数组中。像这样: [0]=>颜色,[1]=>大小 以前,当它只是一个属性

我已经创建了一个电子商务网站,并正在努力扩展它。以前,每个产品都可以有一个属性,例如颜色,因此当用户选择产品时,他们可以选择自己喜欢的颜色

我现在尝试为每个产品添加多个属性,例如颜色和大小

然而,产品的每一个变体都有不同的定价,因此我试图找出如何在后端进行定价

不幸的是,我不能真正展示我所有的代码,因为还有很多额外的东西不适合这个问题,比如供应商给我们不同货币和汇率的成本价格等等

主要问题是,当我选择产品时,应用的属性在一个数组中。像这样:

[0]=>颜色,[1]=>大小

以前,当它只是一个属性时,这很好,我可以从数据库中查询
Color
,并执行如下操作:

foreach($color_query as $color){
    //generate form for pricing
}
foreach(combination of colors and sizes){
    //generate form for pricing
}
Small Red
Medium Red
Large Red
Small Blue
Medium Blue
Large Blue
Small Green
Medium Green
Large Green
现在,对于多个属性,我想做如下操作:

foreach($color_query as $color){
    //generate form for pricing
}
foreach(combination of colors and sizes){
    //generate form for pricing
}
Small Red
Medium Red
Large Red
Small Blue
Medium Blue
Large Blue
Small Green
Medium Green
Large Green
所以我要找的是:

foreach($color_query as $color){
    //generate form for pricing
}
foreach(combination of colors and sizes){
    //generate form for pricing
}
Small Red
Medium Red
Large Red
Small Blue
Medium Blue
Large Blue
Small Green
Medium Green
Large Green
注意:大小和颜色只是示例,我将有多个属性,这些属性可以有多个值,因此使用这些示例,我可能有多达5种大小,但可能有15种颜色

如何获得颜色和尺寸的组合

编辑 我将给出代码中的一些片段,以便更好地理解

我在数据库中查询一个产品,这将返回一个逗号分隔的值字符串,这些值是我的属性集的ID

$attributes = $_GET['attribute'];
$attribute_array = explode(',',$attributes);
$attribute_array = array_diff($attribute_array, array("")); //this line just gets rid of the empty value after the last comma
foreach($attribute_array as $attribute){
//start generating table    
$params = [$attribute];
    $sql = "SELECT * FROM attributes WHERE id=?";
    $attributeResult = DB::run($sql,$params);
    foreach ($attributeResult as $value) {
        //generate form for pricing to go into table
    }
}
//close table

我认为这些其他答案中的建议在这种情况下对我不起作用,因为我正在用PHP在查询之间做其他事情,比如获取生成完整定价表单所需的其他东西,如供应商货币和兑换等,.

@JayBlanchard可能是一个合适的副本。如果可能的话,最好返回表中的所有组合@MehravishTemkar(让SQL完成其设计的繁重任务)。我已经添加了你的建议作为一个骗局,但这不是我将如何处理它。好的:)谢谢@JayBlanchard@PaddyHallihan我将此逻辑用于与您相同的情况,只是根据我的要求进行了修改