所以说我有这个数组:
SetOnKeyListener()
您将如何结合所有可能性,以便获得: 红色小,红色中,红色大,蓝色小,蓝色中,蓝色大,绿色小,绿色中,绿色大。而且,阵列不一定总是相同的大小。
该项目是使用php专门使用laravel框架编写的
答案 0 :(得分:2)
要适应多种变体,
function getVariants($obj)
{
$variant = array_shift($obj["variants"]); // we use the variants as a stack
$results = array(); // we will store the results here
foreach($variant["options"] AS $k=>$v) // we iterate the current variants
{
if(count($obj["variants"]) > 0) // if we have more variants still
{
$sub = getVariants($obj); // we call getVariants to build next level
foreach($sub AS $sub_v) // iterate over the results of the child level
{
// concatenate whatever came from children to the current names
$results[] = $v["name"]." ".$sub_v;
}
}
else
{
$results[] = $v["name"]; // this is the last variant so we just add the names.
}
}
return $results;
}
这应该可以与所需的任何深度的组合一起使用。
此代码的作用是将变体用作处理变体的堆栈,然后,如果堆栈不再较长,则仍将自己调用以在下一级执行相同操作。每个级别都会返回一组自己及其子级(如果有)。