var_dump 使用 foreach 引用循环输出
var_dump output using foreach reference loop
我正在使用带引用的 foreach 循环,即:foreach($elements as &$item)
现在,当我在 foreach()
之后使用 var_dump($elements);
时,最后一个元素总是有一个 &
字符前置到它的变量类型(&string
、&array
、&boolean
、等等)。
示例输出:
array(4) {
[0]=>
string(4) "this"
[1]=>
string(2) "is"
[2]=>
string(2) "an"
[3]=>
&string(7) "example"
}
为什么会这样,它有什么功能/影响?
是地址指针。你可以unset($item)
避免这种情况。
您问题的答案:
1.为什么是这样 :
您可以在 manual
中找到参考
Warning Reference of a $value and the last array element remain even
after the foreach loop. It is recommended to destroy it by unset().
当您在 foreach 循环中使用引用时会出现这种情况。引用位于最后一个数组元素。
2。它有什么功能/影响
考虑这种情况:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
}
print_r($arr);
foreach ($arr as $value) {
}
print_r($arr);
您的输出将是:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3 <---
)
如果你使用unset
:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
}
print_r($arr);
unset($value); <---
foreach ($arr as $value) {
}
print_r($arr);
结果将是:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4 <---
)
我正在使用带引用的 foreach 循环,即:foreach($elements as &$item)
现在,当我在 foreach()
之后使用 var_dump($elements);
时,最后一个元素总是有一个 &
字符前置到它的变量类型(&string
、&array
、&boolean
、等等)。
示例输出:
array(4) {
[0]=>
string(4) "this"
[1]=>
string(2) "is"
[2]=>
string(2) "an"
[3]=>
&string(7) "example"
}
为什么会这样,它有什么功能/影响?
是地址指针。你可以unset($item)
避免这种情况。
您问题的答案:
1.为什么是这样 :
您可以在 manual
中找到参考Warning Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().
当您在 foreach 循环中使用引用时会出现这种情况。引用位于最后一个数组元素。
2。它有什么功能/影响
考虑这种情况:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
}
print_r($arr);
foreach ($arr as $value) {
}
print_r($arr);
您的输出将是:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3 <---
)
如果你使用unset
:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
}
print_r($arr);
unset($value); <---
foreach ($arr as $value) {
}
print_r($arr);
结果将是:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4 <---
)