PHP - 如何从数组中输出元素的组合?

我有一个数组:


$names = array("Jim", "Jane", "Bob", "Susan", "Ralph"); 

我想计算 3 个元素的组合。


输出是这样的:


Jim, Jane, Bob

Jim, Jane, Susan

Jim, Jane, Ralph

Jim, Bob, Susan

Jim, Bob, Ralph

Jim, Susan, Ralph

Jane, Bob, Susan

Jane, Bob, Ralph

Jane, Susan, Ralph

Bob, Susan, Ralph

预期输出有 10 种不同的组合。我一直在考虑如何实现这一点,但不知道如何做到这一点。请帮忙,谢谢。


红颜莎娜
浏览 107回答 1
1回答

犯罪嫌疑人X

该算法非常简单。在移动第一个元素后,您可以简单地使用 while 语句循环剩余的条目,然后使用 2 个其他循环按顺序附加剩余的名称:$names = ["Jim", "Jane", "Bob", "Susan", "Ralph"];$result = [];while (count($names) > 2) {&nbsp; &nbsp; $currentName = array_shift($names);&nbsp; &nbsp; for ($i = 0; $i < count($names) - 1; $i++) {&nbsp; &nbsp; &nbsp; &nbsp; for ($j = $i + 1; $j < count($names); $j++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $result[] = implode(', ', [$currentName, $names[$i], $names[$j]]);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}var_dump($result);结果将是:array(10) {&nbsp; [0]=>&nbsp; string(14) "Jim, Jane, Bob"&nbsp; [1]=>&nbsp; string(16) "Jim, Jane, Susan"&nbsp; [2]=>&nbsp; string(16) "Jim, Jane, Ralph"&nbsp; [3]=>&nbsp; string(15) "Jim, Bob, Susan"&nbsp; [4]=>&nbsp; string(15) "Jim, Bob, Ralph"&nbsp; [5]=>&nbsp; string(17) "Jim, Susan, Ralph"&nbsp; [6]=>&nbsp; string(16) "Jane, Bob, Susan"&nbsp; [7]=>&nbsp; string(16) "Jane, Bob, Ralph"&nbsp; [8]=>&nbsp; string(18) "Jane, Susan, Ralph"&nbsp; [9]=>&nbsp; string(17) "Bob, Susan, Ralph"}
打开App,查看更多内容
随时随地看视频慕课网APP