배열의 순서를 고려한 조합 함수 인 을 찾고 있습니다. 예를 들어 "hello world"의 모든 조합을 생성하려고하지만 "world hello"를 반대로 바꾸고 싶지는 않습니다. 현재 조합 기능이 있지만 너무 큽니다.순열 알고리즘
간단한 예 :
$text = "Hello World"
$arr = explode(" ",$text); // string to array
그리고 준다 : 나는 그것이 더 빨리하려는
"World Hello"
- 키는 다음과 같습니다
$result = combo_function($arr); var_dump($result); "Hello World" "Hello" "World"
내가 역을 원하지 않는 가능하면 조합보다. 나는이 사용하고 현재
:
// careful, this is very labor intensive (O(n^k))
public function buildSearchCombinations(&$set, &$results)
{
for ($i = 0; $i < count($set); $i++) {
$results[] = (string) $set[$i];
$tempset = $set;
array_splice($tempset, $i, 1);
$tempresults = array();
$this->buildSearchCombinations($tempset, $tempresults);
foreach ($tempresults as $res) {
$results[] = trim((string) $set[$i]) . " " . (string) trim($res);
}
}
}
"hello world의 조합"은 무엇을 의미합니까? 단어 순서의 모든 조합? –
여기에서 성취하고자하는 것이 무엇인지 분명하지 않습니다! 당신의 안녕하세요 세상은 당신이 무엇을하려고 하는지를 이해하기 정말 가난합니다! – hassan
기본적으로 데이터베이스 검색에 사용할 순열 세트를 만들려고하지만 모든 조합을 사용하는 대신 사용자가 순서대로 입력해야한다고 가정 할 수 있습니다. 예를 들어, "프렌치 프라이"를 검색하는 경우, 검색 결과를 제공하는 식당을 모두 반환합니다. 프렌치 프라이스에 들어가면 실패 할 것입니다. 현재 나는 "감자 튀김"과 "감자 튀김"을 "감자 튀김"과 "프랑스어"와 함께 자동으로 생성하는 조합을 사용하고 있습니다. 이것은 더 큰 구와 함께 너무 많은 작업입니다. –