2013-12-23 2 views
1
for ($i=40; $i>=30; $i--) //code will display data for top x row 
for ($i=1; $i<=9; $i++) //code will display data for left y column 
for ($i=29; $i>=21; $i--) //code will display data for bottom x row 
for ($i=30; $i>=39; $i++) //code will display data for right y column 

이러한 4 개의 루프는 모두 동일한 작업을 수행합니다. 내 index.php에서 "포함"을 사용하여 4 개의 다른 파일에있는 4 개의 루프를 가져옵니다. for 루프를 어떻게 동적으로 만들 수 있습니까?어떻게 for 루프 매개 변수를 동적으로 만들 수 있습니까?

Algoritihm :

$i = (40,1,29,30) <--will be any of those 4 
$maxlow = (30,9,21,39) 
$check =(>,<)  <--value depends on whether $i > or < $maxlow 
$icrement = (--,++) <-- if $check is > then decrease, otherwise increment 

for ($i; $i($check)=$maxlow; $i($increment) <---what i am trying to do 

답변

0

설정 주어진 루프 : 항상이 같은

$diff = -1; 
$start = 40; 
$stop = 30 + $diff; 

루프 자체 :

for ($i = $start; $i != $stop; $i += $diff) 
+0

Hey Roman for for 루프가 실행 됨 myfunction()에서 $ diff, $ start, $ stop 변수를 매개 변수로 전달하려면 어떻게해야합니까? 또는 myfunction()에 사용할 수있는 가장 좋은 방법은 무엇입니까? –

+1

함수 myfunction ($ diff, $ start, $ stop)을 선언하고 같은 방법으로 호출하면 –

+0

하하 그래, 고맙다. 그러나 여전히 답을 고맙게 생각합니다. –

3
// $step is either 1 (incrementing) or -1 (decrementing) 
foreach (range($begin, $maxlow, $step) as $i) { 

} 
+0

답변을 잘 이해하지 못합니다. 좀 더 설명 할 수 있을까요? –

+0

매뉴얼 페이지에서 [range()] (http://php.net/range) 함수를 찾으십시오. 반복되는 값의 배열을 생성합니다. 이것은 귀하의 요구에 맞는 아주 좋은 해결책입니다. –

0
$low = [40,1,29,30](rand(0,3); 
$high = [30,9,21,39](rand(0,3); 
$modifier = ($low > $high) ? -1 : 1; 

for($i = $low; ($i * $modifier) < ($high * $modifier); $i += $modifier) 
{ 
    doStuff(); 
} 
+0

$ low, $ hi 없음 (1 변수 여야 함) 임의로 선택하지 않고 상단 행, 하단 행, 왼쪽 열 또는 오른쪽 열을 수행하는지 여부에 따라 값이 달라짐 –

0

이유는 바로이 같은 내부 스위치를 사용하지 :

for ($i=1; $i >=39; $i++) { 
    switch($i) { 
     case ($i>=1 && $i<=9): 
     break; 
     ... 
     ... 
     case ($i>40): 
     //do something 
     break; 
    } 

} 

그것은 미래에/편집을 이해하는 것이 훨씬 더 읽기, 쉽게 될 것입니다.

관련 문제