【问题标题】:nested foreach loop array resets嵌套的 foreach 循环数组重置
【发布时间】:2025-12-22 17:10:18
【问题描述】:

如何阻止嵌套的 foreach 循环重置内部数组指针 例如

foreach ($example as $example2)
{
foreach ($xample as $xample2);
{
}
}

例如,如果 $example & $xample 包含数组 (1,2,3)

我想做这样的事情

foreach ($example as $example2)
{
do something with array[1]
foreach ($xample as $xample2);
{
do something else with array[1]
}
}

然后继续 2,3 等... 希望我的问题很清楚,因为据我了解,内部数组指针在第二次循环期间被重置http://us2.php.net/manual/en/control-structures.foreach.php

编辑 所以这就是现在正在发生的事情 假设 $example 包含以下值 1,2,3 & $xample 包含相同的值

foreach ($example as $example2)
{
echo ($example2)
foreach $xample as xample2)
{
echo ($xample2)
}
}

输出看起来像这样,第一个循环输出 1,2,3,第二个循环只输出 1,1,1 我想要的是,第一个循环 1,2,3 第二个循环 1,2,3

编辑 2 代码粘贴在这里http://codepad.org/r1py8HR5 输出显示有 5 个 $examples 和 7 个 $xample 被回显 &xample 包含相同的 $fname2 7 次

【问题讨论】:

  • 数组[1]是什么意思?
  • 我的意思是如果数组[某个值 1,某个值 2,] 等。
  • 如果您愿意,可以在codepad.org 创建一个简单的工作示例 :)

标签: php foreach


【解决方案1】:

每个数组都有自己的数组指针。所以嵌套你的foreach循环不需要你采取任何预防措施,它就像你编码它一样工作。

更新:

针对您的编辑,我认为您的错误在其他地方。我重新创建了您的示例,它似乎可以按照您的意愿工作(请参阅http://codepad.org/nJrZqCoO)。

【讨论】:

  • foreach 在给定数组的副本上工作。因此,您的示例适用于知道自己在做什么的人;)
  • @Sloede 我能想到的唯一可能导致错误的是我正在用它构建另一个变量,例如 $url = "mysite/".$xample2.""
  • 我不认为这可能是问题,除非您从循环内更改您在 foreach 循环中迭代的数组(即修改 $example$xample
  • @Sloede 这是我的代码codepad.org/r1py8HR5,我得到的输出显示在编辑中
  • 请创建一个可以实际执行的代码的最小工作示例,它会产生您描述的不需要的行为。