2017-03-03 34 views
1

我創建了一個函數,它將一個數組作爲參數並將所有值更改爲4,但它不起作用,我不明白爲什麼。真的困擾我,可以用幫助謝謝!PHP函數數組值不變

$cup3 = array (1,4,3,5,7,2); 
roll($cup3); 
print_r($cup3); 

function roll($array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
    return $array; 
} 

輸出:(1,4,3,5,7,2),而不是所有4S

回答

3

要麼通過參考&$array傳遞到直接編輯0​​:

roll($cup3); 
print_r($cup3); 

function roll(&$array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
} 

或者使用從功能返回:

$cup3 = roll($cup3); 
print_r($cup3); 

function roll($array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
    return $array; 
} 
+0

非常感謝,真的很感激它! –

+0

這裏的關鍵洞察是數組是通過值傳入的,不同於通過引用傳入的對象。如果你希望函數體中的數組修改能夠在函數之外持久存在,你必須通過引用明確地傳入它,就像@AbraCadaver的第一個例子。 – ashnazg

+0

我會記住的重要教訓。必須記住的基本知識。 –