我有一个名为 $initValues
的数组,其中包含字符串或数值,并使用 foreach
循环我要将值传输到 $values
数组以及 $types
的每个值的类型。
代码:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $value) {
$values[] = &$value; # by reference.
$types[] = gettype($value);
}
正如您在上面的代码中所看到的,我在 $values
中插入了值,这是稍后使用的函数所必需的,因此可以&# 39;不要改变。当我执行上述代码并使用 var_dump($values)
显示结果时,我会得到以下内容:
array(2) { [0]=> &string(3) "2-1" [1]=> &string(3) "2-1" }
上述结果的问题在于, $values
数组的两个元素基本上都是 $initValues
的最后一个元素,而不是两者都是在期望的结果中,这是:
array(2) { [0]=> &string(3) "1-2" [1]=> &string(3) "2-1" }
如果我按值将每个值输入到数组中,结果是正确的,但我稍后会遇到问题,因此这不是一个选项。如何修改我的代码,以产生所需的结果?
答案 0 :(得分:2)
在foreach循环中使用索引。 这应该有效:
$initValues = ["1-2", "2-1"];
$values = [];
$types = [];
foreach ($initValues as $ix=>$value) {
$values[] = &$initValues[$ix];
$types[] = gettype($value);
}
var_dump($values);