这让我疯了,但我现在正在努力解决这个问题(即格林威治标准时间+2;))。
我想做一个公平的事情(我相信,但事实证明它已经证明了......)简单的任务。
假设我有一个看起来像这样的数组:
Array
(
[0] => Array
(
[OptionID] => 8748
[Values] => Array
(
[0] => 11614
[1] => 11615
)
)
[1] => Array
(
[OptionID] => 8749
[Values] => Array
(
[0] => 11616
[1] => 11617
)
)
)
此阵列用于生成产品的所有可能选项。让我们说OptionID 8748的意思是'大小',那个数组中的值是'L'和& 'XL'。 OptionID 8749可以是'Color',其值为'Red'和'Black'。
我想完成一项简单的任务,即将该产品的四种独特组合放在一个字符串中:
11614 + 11616 11614 + 11617 11615 + 11616 11615 + 11617
然而,使用不同的产品可能会有第三种产品选择,所以它应该可以无限深度地工作。
答案 0 :(得分:1)
基本上
$result = array_cartesian(array_pluck($a, 'Values'));
以下是辅助函数:
function array_pluck($a, $key) {
$r = array();
foreach($a as $v)
$r[] = $v[$key];
return $r;
}
function array_cartesian($_) {
if(count($_) == 0)
return array(array());
$a = array_shift($_);
$c = array_cartesian($_);
$r = array();
foreach($a as $v)
foreach($c as $p)
$r[] = array_merge(array($v), $p);
return $r;
}