作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个类似于这个例子的 PHP 数组:
$array[0][0] = 'apples';
$array[0][1] = 'pears';
$array[0][2] = 'oranges';
$array[1][0] = 'steve';
$array[1][1] = 'bob';
我希望能够从这个表格中生成一个包含这些所有可能组合的表格,但不重复任何组合(无论它们的位置如何),因此例如这将输出
Array 0 Array 1
apples steve
apples bob
pears steve
pears bob
但我希望它能够处理尽可能多的不同数组。
最佳答案
这称为“笛卡尔积”,数组的 php 手册页 http://php.net/manual/en/ref.array.php展示了一些实现(在评论中)。
还有一个:
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('apples', 'pears', 'oranges'),
array('steve', 'bob')
);
print_r($cross);
关于php - N 数组的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516599/
我是一名优秀的程序员,十分优秀!