2013-07-18 4 views
4

사용자를 그룹으로 구성하고이를 검사 할 방법이 필요합니다. 예를 들어 나는 성 (gender)을 확인하는 방법을 가지고 있는데, 성 불균형이 없으면 true를 반환하고 있으면 false를 반환합니다. 나이 분포를 확인하고 성별을 확인하는 비슷한 방법도 있습니다. 이 방법들 각각에 대해 그룹의 최적화 된 배열을 만드는 방법이 있습니다.PHP에서 다른 순서로 함수를 호출하려면 어떻게해야합니까?

e.e. 성별에 따라 그룹을 최적화하는 방법이 있습니다. 각각의 검사가 false를 반환하는 경우에만이 메서드 중 하나를 호출합니다. 제가 실행하고있는 문제는 특정 기준, 즉 성별에 따라 그룹을 최적화하면 새로운 최적화 그룹이 다른 확인 기준을 엉망으로 만들 가능성이 있다는 것입니다.

예를 들어 나이, 성별 및 기술 수준 (제 3 번 확인)을 확인하고 나이가 불균형하다는 것을 알게되면 나이와 관련하여 그룹을 최적화하고 성별을 스킬 레벨 분포. 이 문제에 대한 나의 해결책은 체크 방법의 모든 변형을 호출하고 모든 메소드가 true를 반환하는 경우 (모든 검사가 true를 반환하면 모든 그룹에 연령, 성별 및 기술 수준의 균형이 잘 유지되는 방법) 호출 할 수있는 방법을 찾을 수 있었다는 것입니다.

예 : A, B 및 C가 검사 방법이고 optimize_A, optimize_B, optimize_C가 최적화 된 그룹 방법이되도록합시다. 확인 방법 3을 통해 어떤 식 으로든 루프가 필요합니다! 시간 (왜냐하면 3 가지 체크 방법이 있고 ABC, ACB, BAC, BCA, CAB, CBA를 실행해야하기 때문입니다). 또는 while 루프를 수행하고 메소드 check all()이 true를 반환하면 (모든 검사는 true를 반환하고 모두 좋은 분포를 가짐) check 메소드의 모든 조합을 실행하면 중단됩니다.

누구든지이 문제를 해결해 줄 수 있습니까? 내가 초보 프로그래머이며 이전에는 이런 짓을 한적이 없다는 것을 명심하십시오. 감사합니다

편집 :

어떻게 PHP에서이 자바 스크립트 코드와 같은 일을 할 수 있을까?

<?php 

$checks_to_run = array('check_gender','check_age','check_skill_level'); 
$rand = floor(rand(0, count($checks_to_run) - 1)); 
$func = $checks_to_run[$rand]; 
echo $this->.$func.($tmp); // $tmp is an array of groups 

?> 
+0

당신은 기본적으로 N-방법을하고있는 [배낭 문제 (https://en.wikipedia.org/wiki/Knapsack_problem). 쉬운 해결책이 없습니다. –

+3

프로그래밍에 대한 가장 중요한 부분은 실제로 작동하는지보고하려는 시도입니다. 특정 섹션에 집착하는 경우 도움을 요청하십시오. 당신 앞에 논리가 있습니다. 새로운 걸 시도 해봐! –

+1

'call_user_func (array ($ this, $ func), $ tmp);', 왜 이것이'[보류]'인지 모르겠다. ... – Wrikken

답변

1

당신 이 거의했다 단지 끝 부분에 점을 제거 :

var arr = [check1, check2, check3], 
    rand = Math.floor(Math.random() * arr.length), 
    func = arr[rand]; 
func(); 

여기 내 시도이다.

$checks_to_run = array('check_gender','check_age','check_skill_level'); 
$rand = floor(rand(0, count($checks_to_run) - 1)); 
$func = $checks_to_run[$rand]; 
echo $this->$func($tmp); // $tmp is an array of groups 
관련 문제