由于我是一名PHP新手,所以提前道歉,我确定我没有在这里使用正确的术语。
我使用一组提供的SKU制作自动化产品数据Feed,但Feed需要单独输入产品的大小和性别差异。
有一种简单的方法可以解决这个问题:
$SKUs = array('Product1', 'Product2', 'Product3')
并将数组中的每个条目“乘以”:
$gender = array('M', 'F');
$size = array('S', 'M', 'L', 'XL');
所以我最终得到了这个结果:
$feed = array('Product1M-S', 'Product1M-M', 'Product1M-L', 'Product1M-XL', 'Product1F-S'...)
答案 0 :(得分:7)
$feed = array();
foreach ($SKUs as $sku) {
foreach ($gender as $g) {
foreach ($size as $s) {
$feed[] = $sku.$g.'-'.$s;
}
}
}
print_r($feed);
也许存在一个简单的数组函数,但是这个函数很容易阅读,并为将来做好准备" easy"变化。
PS。这是一个很好的讲座,有类似的问题:http://dannyherran.com/2011/06/finding-unique-array-combinations-with-php-permutations/
PS2。正如 KA_lin 建议的那样,您可以执行此功能,但是,我还没有了解阵列和产品结构,也不知道尺寸是否总是如此每种产品的相同(S,L,X)。如果数组始终相同,则可以在函数体内对其进行硬编码,如 KA_lin 所示。我只展示了线性解决方案,但您也可以轻松升级它的需求。
答案 1 :(得分:2)
您只需要一次遍历所有3个数组并附加到这样的新数组:
$SKUs = array('Product1', 'Product2', 'Product3')
function generate_product_combinations($SKUs)
{
$size = array('S', 'M', 'L', 'XL');//these 2 arrays are universal
$gender = array('M', 'F'); //and can belong here rather than params
$final = array(); //but should be taken from a config
foreach($SKUs as $sku)
{
foreach($size as $size_shirt)
{
foreach($gender as $sex)
{
$final[]=$sku.$gender.'-'.$sex;
}
}
}
return $final;
}
$products = generate_product_combinations($SKUs);