爲了優化輸出,我最近遇到了一種情況,我必須得到數組內所有數組鍵。我查看了幾個地方(包括StackOverflow),但找不到解決方案,因爲大多數地方都與排列相關而不是組合。查找數組鍵與值的組合
鑑於此輸入
$input = ['jack' => 11, 'moe' => 12, 'shane' => 12];
輸出應該是這樣的(一個陣列內的順序並不重要)。
$output = [
['jack' => 11],
['jack' => 11, 'moe' => 12]
['jack' => 11, 'moe' => 12, 'shane' => 12]
['moe' => 12],
['moe' => 12, 'shane' => 12]
['shane' => 12],
['shane' => 12, 'jack' => 11]
];
我試過這個,但經過第三次迭代後它不起作用。
function combination(array $inputs, array $temp, &$collect) {
if (!empty($temp)) {
$collect[] = $temp;
}
for ($i = 0; $i < sizeof($inputs); $i++) {
$inputCopy = $inputs;
$elem = array_splice($inputCopy, $i, 1);
if (count($inputCopy) > 0) {
$temp[array_keys($elem)[0]] = array_values($elem)[0];
combination($inputCopy, $temp, $collect);
} else {
$temp[array_keys($elem)[0]] = array_values($elem)[0];
$collect[] = $temp;
$temp = [];
}
$i++;
}
}
雖然我需要PHP甚至是Python甚至Python(不使用itertools組合),但Java,Javascript將適用於我。
我不得不在你的例子中做一些改變,但它的工作。非常感謝你。 – nicholasnet