处理多个数组时,可能需要生成一个表,其中包含这些数组中所有可能的元素组合数组,同时避免重复。这种数学运算称为笛卡尔积。
要在 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);
此函数采用可变长度参数,每个参数代表一个数组。它通过从第一个数组中选择一个元素并将其与其余数组的所有可能的笛卡尔积组合来递归计算笛卡尔积。
结果是一个嵌套数组,其中包含输入数组中元素的每个唯一组合。在给定的示例中,两个数组的笛卡尔积将产生:
Array 0 Array 1 apples steve apples bob pears steve pears bob
此解决方案不仅对二维数组有效,而且还可以扩展以处理任意数量的数组。它提供了一种简洁而优雅的方法来解决 PHP 中的笛卡尔积问题。
以上是如何在 PHP 中计算多个数组的笛卡尔积?的详细内容。更多信息请关注PHP中文网其他相关文章!