具有公共前缀的动态命名数组上的单个 foreach 循环语句


Single foreach loop statement on dynamically named arrays with a common prefix?

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

我正在脚本中创建具有动态名称的数组。以这种方式创建的所有数组都附加了一个数字。
例如:$group 1、$group 2、$group 3、$group 4、$group 5、$group 6、$group 7、$group 8

如果我确切地知道(并且我的脚本理解)有多少个数组(因此,将知道所有的暂停),我想知道是否有任何执行一个语句来理解遍历所有 8 个数组而不必调用 8 个单独的循环。

我想重写这部分代码以使用多维数组可能会好得多,但是很久以前我使用这些信息编写了一些其他函数,当时我的经验要少得多,并且没有意识到项目的范围。请注意,此项目仅用于个人目的。

举一个更好的例子,有没有可能做这样的事情?

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

variable variables来实现此操作:

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