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]);
    }
}

スクリプトで動的な名前の配列を作成しています。この方法で作成されたすべての配列には、番号が追加されます。
例: $group1、$group2、$group3、$group4、$group5、$group6、$group7、$group8

配列の数が正確にわかっている (そしてスクリプトが理解している) 場合 (そして、その結果、すべてのアペンションがわかる)、それらの 8 つすべてを通過することを理解する単一のステートメントを実行する方法があるかどうか疑問に思っていました。 8 つの別々のループを呼び出すことなく、配列を使用できます。

コードのこの部分を多次元配列を使用するように書き直す方がおそらくはるかに優れていると思いますが、かなり前にこの情報を使用して他の関数をいくつか書きました。プロジェクト。このプロジェクトは個人的な目的でのみ使用されることに注意してください。

より良い例を挙げると、このようなことは可能ですか?

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

1 に答える 1

3

これは次の方法で実現できますvariable variables

for($i = 0; $i < $number_of_groups + 1; i++) {
    $var = 'group' . $i;
    foreach ($$var as $value) {
        // ...
    }
}
于 2012-06-04T20:06:10.190 に答える