给定一个关联数组,可以在保留其键的同时确定其笛卡尔积并在内部利用它们
我们可以通过归纳法来解决这个问题:
对于单个数组,笛卡尔积是一系列具有表示原始数组中每个项目的单个键值对的数组。
假设前 N-1 个数组的乘积已知,添加第N个数组涉及:
对于每个现有产品,附加一个包含第 N 个数组的键和第 N 个数组的第一个值的元素
重复这些步骤可确保获得 N 个数组的乘积。
功能cartesian($input) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$result = array(); foreach ($input as $key => $values) { if (empty($values)) { continue; } if (empty($result)) { foreach($values as $value) { $result[] = array($key => $value); } } else { $append = array(); foreach($result as &$product) { $product[$key] = array_shift($values); $copy = $product; foreach($values as $item) { $copy[$key] = $item; $append[] = $copy; } array_unshift($values, $product[$key]); } $result = array_merge($result, $append); } } return $result;
}
$input = array(</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'), 'gender' => array('Female', 'Male'), 'location' => array('Vancouver', 'Calgary'),
);
print_r(笛卡尔($input));
数组<br>(<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">[0] => Array ( [arm] => A [gender] => Female [location] => Vancouver ) [1] => Array ( [arm] => A [gender] => Female [location] => Calgary ) [2] => Array ( [arm] => A [gender] => Male [location] => Vancouver )
...等
以上是如何在保留键的同时计算 PHP 关联数组的笛卡尔积?的详细内容。更多信息请关注PHP中文网其他相关文章!