【发布时间】:2015-01-28 09:32:23
【问题描述】:
我有 100 个名字和 100 个姓氏的列表。 我想使用所有组合的混合而不重复。 您对此有一些数学解决方案吗?
【问题讨论】:
-
你自己有没有尝试过?
-
你不需要排列而是组合。看这里:en.wikipedia.org/wiki/Cartesian_product
我有 100 个名字和 100 个姓氏的列表。 我想使用所有组合的混合而不重复。 您对此有一些数学解决方案吗?
【问题讨论】:
这被称为“笛卡尔积”,数组http://php.net/manual/en/ref.array.php 上的 php 手册页显示了一些实现(在 cmets 中)。
还有一个:
function array_cartesian() {
$_ = func_get_args();
if(count($_) == 0)
return array(array());
$a = array_shift($_);
$c = call_user_func_array(__FUNCTION__, $_);
$r = array();
foreach($a as $v)
foreach($c as $p)
$r[] = array_merge(array($v), $p);
return $r;
}
$cross = array_cartesian(
array('A', 'B', 'C'),
array('1', '2')
);
print_r($cross);
【讨论】: