Php 如何计算/生成包含数组中所有可能值的字符串?
这让我快发疯了,但我整个中午都在努力解决这个问题(我是GMT+2;) 我想做一个相当简单的任务(我相信,但事实证明并非如此) 假设我有一个如下所示的数组:Php 如何计算/生成包含数组中所有可能值的字符串?,php,Php,这让我快发疯了,但我整个中午都在努力解决这个问题(我是GMT+2;) 我想做一个相当简单的任务(我相信,但事实证明并非如此) 假设我有一个如下所示的数组: Array ( [0] => Array ( [OptionID] => 8748 [Values] => Array ( [0] => 11614
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可以是“颜色”,值为“红色”和“黑色”
我想完成一项简单的任务,以字符串形式获得该产品的四种独特组合,如:
11614+11616
11614+11617
11615+11616
11615+11617
但是,如果使用不同的产品,可能会有第三种产品选项,因此它应该能够以无限的深度在周围工作。基本上
$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;
}
先生,你是我今天的英雄!非常感谢+10