저는 PHP (및 프로그래밍 전반)의 초급자입니다. 지금까지 배운 것을 테스트하기 위해이 코드를 작성했습니다.이 코드는 설정된 수의 주사위와 특정 개수의 얼굴 수를 조합하여 인쇄합니다. (코드를 찾을 수 있습니다).PHP - for 루프를 가변 횟수만큼 중첩합니다.
내가하고 싶은 일은 $dicenumber
변수에 따라 중첩 된 for 루프의 수를 동적으로 변경하는 것입니다.
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
for ($d3=1; $d3 <= $d3value ; $d3++) {
array_push(${sum.($d1+$d2+$d3)}, "$d1"."$d2"."$d3");
}
}
}
그러나 $dicenumber
가 2
이라면, 예를 들어,이 같은 생산 것이라고, 그래서 나는 그것을 변경하려면 : 지금 그것은 코드는 과정 3 주사위입니다 수 있기 때문에
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
array_push(${sum.($d1+$d2)}, "$d1"."$d2");
}
}
을
제한없이 코드 번호 $dicenumber
이 무엇이든 코드를 처리하기를 원합니다. 주위를 둘러 보니, 일종의 재귀 코드를 추가해야하는 것처럼 보이지만 그렇게하는 방법을 모르겠습니다. 어떤 팁? 또한, 내가 일반적으로 잘못한 것에 대한 피드백은 매우 유용 할 것입니다! 감사! 이 기능을 배운 경우
<?php
//defines the number and type of dice
$dicenumber = 3;
$dtype = 6;
//defines the maximum value of every die
for ($i=1; $i <=$dicenumber ; $i++) {
${d.$i.value} = $dtype;
}
//defines and array for each possible sum resulting from the roll of the given number of dice.
for ($i=$dicenumber; $i <= ($dtype*$dicenumber) ; $i++) {
${sum.$i} = array();
}
//the troublesome piece of code I want to change
for ($d1=1; $d1 <= $d1value ; $d1++) {
for ($d2=1; $d2 <= $d2value ; $d2++) {
for ($d3=1; $d3 <= $d3value ; $d3++) {
array_push(${sum.($d1+$d2+$d3)}, "$d1"."$d2"."$d3");
}
}
}
//prints all the possible roll combinations, each line lists combination that share the same sum
for ($i=$dicenumber; $i <= ($dtype*$dicenumber); $i++) {
print join(" ", ${sum.$i})."<br />";
}
?>
정말 고마워요 !! 당신은 이것이 나에게 얼마나 유익한 지 전혀 모른다. 이 코드는 조합을 차례대로 인쇄하는 반면, 원래의 코드는 sum으로 정렬 된 행에 인쇄했습니다. 행을 정렬하는 것을 포함하여 내가 원하는대로 출력을 조작 할 수 있기 때문에 프로세스가 명확하게 유연성이 있습니다. 다음에 시도 할 작업은 다음과 같습니다. 다시 한번 감사드립니다! 정말 고맙습니다. – user3507868
문제 없습니다. 내 대답을 받아 들일 수 있다면, 좋을 것입니다 (체크 표시). – larsAnders