【问题标题】:How can I implement scoped foreach in PHP?如何在 PHP 中实现作用域 foreach?
【发布时间】:2013-05-27 14:10:11
【问题描述】:

我从 excel 电子表格中获取数据,对其进行循环,然后将其保存到数组中。然后,我循环该数据两次。

我愿意:

foreach($someData as $key => $value) {

}

我将需要再次 foreach 相同的数组。有什么办法可以让我再次使用 $key => $value 而不会造成任何问题?

【问题讨论】:

  • 为什么不循环一次?
  • 当您说“循环数据两次”时,第一个循环是否在您开始第二个循环之前完成?

标签: php foreach scope


【解决方案1】:

听起来你只需要一个循环,但要回答你的问题,你可以这样做:

foreach($someData as $key => $value) {
    #do stuff here
}

foreach($someData as $key => $value) {
    #do more stuff here
}

$key$value 在每个循环的每次迭代中都会被覆盖,所以这里没有危险。

不过,您的问题有点不清楚——如果您在另一个 foreach 内有一个 foreach,并且希望对每个循环的键和值使用相同的变量名集,请使用函数。这是在 PHP 中创建新本地作用域的唯一方法:

function nested_loop($arr) {
    foreach($arr as $key => $value) {
        #do more stuff here
    }
}

foreach($someData as $key => $value) {    #same names, different variables
    #do stuff here

    nested_loop($value);
}

【讨论】:

  • 谢谢。我以为它们被覆盖了,但我不知道它是无害的。
  • 好吧,正确使用它是无害的,但程序员总有可能对特定变量包含的内容感到困惑并犯错误(发生在我身上的次数比我想的要多) )。因此,not 对两组变量使用相同的名称可能是个好主意......通常像 $key1$key2 这样的名称是一个更好的主意。当它有意义时,我喜欢从一开始就防止自己犯错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2019-06-17
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2023-03-13
  • 2021-12-29
相关资源
最近更新 更多