給定一個關聯數組,可以在保留其鍵的同時確定其笛卡爾積並在內部利用它們
方法論
我們可以用歸納法來解決這個問題:
對於單一數組,笛卡爾積是一系列具有表示原始數組中每個項目的單一鍵值對的數組。
假設前N-1 個陣列的乘積已知,加入第N個陣列涉及:
對於每個現有產品,附加一個包含第N 個陣列的鍵和第 N個陣列的第一個值的元素
重複這些步驟可確保獲得 N 個陣列的乘積。
功能cartesian($input) {<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(<pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'), 'gender' => array('Female', 'Male'), 'location' => array('Vancouver', 'Calgary'),
);
print_r(笛卡爾($input));
陣列<br>(<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中文網其他相關文章!