通过引用将值传递到数组中的问题
Issue with passing values by reference into an array
我有一个名为 $initValues
的数组,其中包含字符串或数值并使用 foreach
循环 我想将值传输到 $values
数组,并将每个值的类型传输到 $types
.
代码:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $value) {
$values[] = &$value; # by reference.
$types[] = gettype($value);
}
正如你在上面的代码中看到的,我在 $values
中通过引用插入值,这是稍后使用的函数所需要的,所以那是无法改变的。当我执行上面的代码并使用 var_dump($values)
显示结果时,我得到以下信息:
array(2) { [0]=> &string(3) "2-1" [1]=> &string(3) "2-1" }
上述结果的问题在于,我的 $values
数组的两个元素本质上都是 $initValues
[ 的最后一个元素=40=] 而不是两者都如预期的结果那样,即:
array(2) { [0]=> &string(3) "1-2" [1]=> &string(3) "2-1" }
如果我按值将每个值输入到数组中,结果是正确的,但我稍后会遇到问题,所以这不是一个选项。我怎样才能修改我的代码,以产生所需的结果?
在 foreach 循环中使用索引。
这应该有效:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $ix=>$value) {
$values[] = &$initValues[$ix];
$types[] = gettype($value);
}
var_dump($values);
我有一个名为 $initValues
的数组,其中包含字符串或数值并使用 foreach
循环 我想将值传输到 $values
数组,并将每个值的类型传输到 $types
.
代码:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $value) {
$values[] = &$value; # by reference.
$types[] = gettype($value);
}
正如你在上面的代码中看到的,我在 $values
中通过引用插入值,这是稍后使用的函数所需要的,所以那是无法改变的。当我执行上面的代码并使用 var_dump($values)
显示结果时,我得到以下信息:
array(2) { [0]=> &string(3) "2-1" [1]=> &string(3) "2-1" }
上述结果的问题在于,我的 $values
数组的两个元素本质上都是 $initValues
[ 的最后一个元素=40=] 而不是两者都如预期的结果那样,即:
array(2) { [0]=> &string(3) "1-2" [1]=> &string(3) "2-1" }
如果我按值将每个值输入到数组中,结果是正确的,但我稍后会遇到问题,所以这不是一个选项。我怎样才能修改我的代码,以产生所需的结果?
在 foreach 循环中使用索引。 这应该有效:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $ix=>$value) {
$values[] = &$initValues[$ix];
$types[] = gettype($value);
}
var_dump($values);