2017-01-14 1 views
-1

그래서 수학, 수식 등은별로 좋지 않습니다. 이것은 내 머리 위로 조금있다.PHP : List/Array/Database의 2, 3, 4 이모티콘의 모든 고유 조합

기본적으로 배열이나 약 30 개의 이모티콘이 포함 된 데이터베이스가 있습니다. 기본적으로 양식에 숫자를 입력하고 3을 말하고 제출을 누르십시오. php 스크립트는 가능한 한 3 개의 그림 이모티콘의 고유 한 조합을 만든 다음 배열로 다시 배치하거나 새 줄로 구분 된 화면에 바로 출력합니다.

양식을 코딩하는 방법을 알고 있습니다. 화면에 출력하고 항목을 배열 등에 다시 배치하는 것을 알고 있습니다. 코딩하는 데 좋은 경험이 있지만 잘 모르겠습니다. 사용자 입력을 기반으로하는 이모티콘의 조합을 만드는 방법에 대해 알아 봅니다.

어떤 도움을 주시면 감사하겠습니다. 어떤 설명이 필요하면 알려주세요.

답변

0

3에 대한 조합 수는 4 * 30 * 29 * 28 = 24360 * 27이되므로 합계는 657720이되므로 저장 용량이 부족할 수 있으므로 빌드하는 것이 좋습니다. 공간이 부족하거나 스택 오버플로가 발생하지만 재밌는 스크립트는 재귀 스크립트를 사용하여 빌드 할 수 있습니다.

[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 

주 : 4 개 이모티콘 콤보 사용할 $combos = makeCombos($emojis, 4);(1, 3)의 사용 범위는

$emojis = range(1, 30); 
$combos = makeCombos($emojis, 3); 
echo json_encode($combos); 

function makeCombos($emojis, $depth, $now = []) { 
    $results = []; 
    $depth--; 
    foreach ($emojis as $key => $value) { 
     $current = $now; 
     $current[] = $value; 
     $emojisNew = $emojis; 
     unset($emojisNew[$key]); 
     if ($depth > 0) { 
      $results = array_merge(
        $results, 
        makeCombos($emojisNew, $depth, $current) 
       ); 
     } else { 
      $results[] = $current; 
     } 
    } 
    return $results; 
} 

때문에 단지 3 * 2 * 1 = 6의 결과는 다음과 같은 결과가 수득된다.