如何在PHP中实现作用域foreach?

如何在PHP中实现作用域foreach?,php,foreach,scope,Php,Foreach,Scope,我从excel电子表格中获取数据,在其上循环,并将其保存到数组中。然后,我将该数据循环两次 我有: 我需要再次使用相同的数组。有什么方法可以让我再次使用$key=>$value而不引起任何问题吗?听起来您只需要一个循环,但要回答您的问题,您可以这样做: foreach($someData as $key => $value) { #do stuff here } foreach($someData as $key => $value) { #do more stuf

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

我有:


我需要再次使用相同的数组。有什么方法可以让我再次使用$key=>$value而不引起任何问题吗?

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

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

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

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

为什么不循环一次?当你说“循环两次数据”时,第一个循环在你开始第二个循环之前完成了吗?为什么不循环一次?当你说“循环两次数据”时,第一个循环在你开始第二个循环之前完成了吗?谢谢。我以为它们被覆盖了,但我不知道它是无害的。好吧,正确使用它是无害的,但总有一种可能性,你,程序员,会对某个特定变量包含的内容感到困惑,并犯错误(发生在我身上的事情比我希望的要多)。所以最好不要对两组变量使用相同的名称。。。通常像
$key1
$key2
这样的东西是一个更好的主意。当它有意义的时候,我喜欢首先防止自己犯错误。谢谢。我以为它们被覆盖了,但我不知道它是无害的。好吧,正确使用它是无害的,但总有一种可能性,你,程序员,会对某个特定变量包含的内容感到困惑,并犯错误(发生在我身上的事情比我希望的要多)。所以最好不要对两组变量使用相同的名称。。。通常像
$key1
$key2
这样的东西是一个更好的主意。当它有意义时,我喜欢首先防止自己犯错误。