Php 同一范围内的两个foreach具有相同的变量名(第一个使用引用)
我在PHP中遇到了一个非常有趣的关于foreach循环的问题。我在一个范围内声明了一个数组和两个非常相似的foreach循环 有趣的是,如果第二个foreach与第一个foreach使用相同的变量名,同时第一个foreach使用对数组项的引用,则第二个foreach无法正常工作 例如 那么$second_数组不包含一、二、三、四,而是包含一、二、三、三 有人能给我解释一下为什么会这样吗?因为我真的不知道,这两个变量应该有不同的作用域,它在没有引用的情况下工作得很好 //修复非常简单,除了明显地将两个foreach循环合并为一个外,它还有助于更改其中一个foreach循环的“item property”名称,例如$my_item_1。问题是,我不想修复它,我想理解它: 编辑: 这个很好用Php 同一范围内的两个foreach具有相同的变量名(第一个使用引用),php,arrays,foreach,Php,Arrays,Foreach,我在PHP中遇到了一个非常有趣的关于foreach循环的问题。我在一个范围内声明了一个数组和两个非常相似的foreach循环 有趣的是,如果第二个foreach与第一个foreach使用相同的变量名,同时第一个foreach使用对数组项的引用,则第二个foreach无法正常工作 例如 那么$second_数组不包含一、二、三、四,而是包含一、二、三、三 有人能给我解释一下为什么会这样吗?因为我真的不知道,这两个变量应该有不同的作用域,它在没有引用的情况下工作得很好 //修复非常简单,除了明显地将
$my_array = array("one", "two", "three", "four");
foreach($my_array as $my_item) {
}
foreach($my_array as $my_item) {
$second_array[] = $my_item;
}
这也很好用
$my_array = array("one", "two", "three", "four");
foreach($my_array as &$my_item) {
}
foreach($my_array as $my_item_1) {
$second_array[] = $my_item_1;
}
手册页对此进行了说明:
警告
$value和最后一个数组元素的引用即使在
foreach循环。建议通过取消设置将其销毁
这里有一个非常好的答案:。手册页对此进行了解释:
警告
$value和最后一个数组元素的引用即使在
foreach循环。建议通过取消设置将其销毁
这里有一个非常好的答案:。您能为第一个循环填写正文,让我们看看它在做什么吗?你是否正在修改该循环中的$my_项?它按照我写的那样工作,例如,即使是空的实体,也不像人们期望的那样工作。例如,示例按照我测试过的帖子中的描述工作。你能为第一个循环填充实体,以便我们可以看到它在做什么吗?你是否在该循环中修改$my_项目?它按照我写的那样工作,例如,即使是空的实体,也不像人们期望的那样工作,例如,示例按照我测试过的帖子中的描述工作。谢谢!我认为$value只在它所属的foreach的内部范围内声明。。。PHP确实是一种有趣的语言。谢谢!我认为$value只在它所属的foreach的内部范围内声明。。。PHP确实是一种有趣的语言。
$my_array = array("one", "two", "three", "four");
foreach($my_array as &$my_item) {
}
foreach($my_array as $my_item_1) {
$second_array[] = $my_item_1;
}
$my_array = array("one", "two", "three", "four");
foreach($my_array as &$my_item) {
}
unset($my_item); //unset()
foreach($my_array as $my_item) {
$second_array[] = $my_item;
}