2012-06-04 4 views
0
$size_of_groups = "4"; 
// for the purpose of the question, assume $seeded_teams size is currently 32, it's array that returns data from a function i have created, 
//however the size can change 
// depending on user input 

// creates dynamically named arrays (i realize this is a poor way of doing 
//things, but, for my purposes it is fine 
$ft = "true"; 
for ($i = 1; $i < sizeof($seeded_teams)/$size_of_groups + 1; $i++) { 
    if ($ft == "true") { 
     ${"group{$i}"} = array($seeded_teams[0], $seeded_teams[sizeof($seeded_teams)/2 - 1], 
     $seeded_teams[sizeof($seeded_teams)/2], $seeded_teams[sizeof($seeded_teams) - 1]); 
     $ft = "false"; 
    } else { 
     ${"group{$i}"} = array($seeded_teams[-1 + $i], $seeded_teams[sizeof($seeded_teams)/2 - $i], 
     $seeded_teams[sizeof($seeded_teams)/2 - 1 + $i], $seeded_teams[sizeof($seeded_teams) - $i]); 
    } 
} 

스크립트에 동적 이름을 사용하여 배열을 만듭니다. 이 방법으로 생성 된 모든 배열에는 숫자가 추가됩니다. 예를 들어
: $ 그룹 1, $ 그룹 2, $ 그룹 3, $ 그룹 4, $ group5, $ group6, $ group7, $공통 접두사를 사용하여 동적으로 명명 된 배열에 단일 foreach 루프 문이 있습니까?

나는 (내 스크립트가 이해)가 정확히 얼마나 많은 배열을 알고있는 경우 group8 (등 결과, 모든 appments를 알 수 있습니다.) 어쨌든 8 개의 별도 루프를 호출하지 않고도 8 개의 배열을 모두 처리하는 것을 이해하는 단일 명령문을 실행해야하는지 궁금합니다.

다차원 배열을 사용하기 위해 코드의이 부분을 다시 작성하는 것이 훨씬 더 좋을 것이라고 상상해 봅니다. 그러나 나는 훨씬 적은 경험이 있었을 때이 정보를 사용하여 몇 가지 다른 기능을 작성했습니다. 프로젝트의 범위를 깨달았다. 이 프로젝트는 개인적인 용도로만 사용됩니다.

더 나은 예를 들면 다음과 같이 할 수 있습니까?

for($i=0;$i < $number_of_groups + 1; i++) { 
    foreach ($"{group{$i}"} as $value) { 
     echo $value."<br>"; 
    } 
} 

답변

3

당신은 variable variables으로이 작업을 수행 할 수 있습니다

for($i = 0; $i < $number_of_groups + 1; i++) { 
    $var = 'group' . $i; 
    foreach ($$var as $value) { 
     // ... 
    } 
} 
+0

감사 많은이 완벽했다. – anditpainsme