在新的foreach循环中访问在一个foreach循环中创建的外部数组

时间:2017-11-11 12:34:49

标签: php foreach scope

一定很简单 - 但我无法弄明白。我在array循环中创建了foreach - 就像这样:

foreach ($fixturesarray as $value) { 
    if ($i++ % 9 == 3) { 
        $hometeamarray[] = $value; 
    }
}

它工作正常......然后我想在另一个$hometeamarray循环中使用数组(foreach) - 就像这样:

foreach ($xmlteams->children() as $output) { 
    if (in_array($output->OPPONENT, $hometeamarray)) { 
        $result[] = (string) $output->ALIGNED; 
    }
}

我需要检查名为OPPONENT的XML文件节点中$hometeamarray中的每个值,然后将其替换为名为ALIGNED的XML文件的节点。这一切都很顺利,除了我无法在第二个foreach循环中访问$hometeamarray ???

2 个答案:

答案 0 :(得分:0)

如果我是你,我会在周期之前初始化array,例如:

$hometeamarray = array();
foreach ($fixturesarray as $value) { 
    if ($i++ % 9 == 3) { 
        $hometeamarray[] = $value; 
    }
}

避免$fixturesarray为空时出现问题。

现在,您无法访问$hometeamarray的原因可能各不相同。您需要确保第二个循环在第一个循环后执行。此外,您需要确保$hometeamarray不在第二个周期的范围之外。 var_dump - 你应该看看这是否是你的问题。最后确保children中有$xmlteams,并且他们有OPPONENT成员,是否可以在$hometeamarray找到。

答案 1 :(得分:0)

我是这样做的:

foreach (array_chunk($fixturesarray,9) as $key => $value) {
  $hometeam = $value[4];
  foreach ($xmlteams->children() as $output) { if ($output->OPPONENT == $hometeam) { $hometeamaligned = $output->ALIGNED; }}
}

它就像一个魅力,更容易维护 - 感谢array_chunk。