2016-12-27 113 views
0

我有一個名爲$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而不是既作爲在所希望的結果,這是:

array(2) { [0]=> &string(3) "1-2" [1]=> &string(3) "2-1" } 

如果我由值每個值輸入到陣列中的結果是COR但是我後來面臨一個問題,所以這不是一個選項。我如何修改我的代碼,以便產生所需的結果?

+0

你應該避免使用參考儘可能傳遞的變量。隨着應用程序的增長它可以給你很多麻煩.. –

+1

我與你對@MateiMihai,但該特定功能是內置的並需要參考。這是在我的手中;) –

回答

2

在你的foreach循環中使用一個索引。 這應該工作:

$initValues = ["1-2", "2-1"]; 
$values = []; 
$types = []; 

foreach ($initValues as $ix=>$value) { 
    $values[] = &$initValues[$ix]; 
    $types[] = gettype($value); 
} 
var_dump($values); 
+0

意想不到的想法@crystalAhmet。 Upvoted!萬分感謝! –