2011-12-08 70 views
5

所以我試圖通過在函數中添加鍵和值來修改數組modArr;我期望var轉儲顯示添加的項目,但我得到NULL。我在這裏錯過了什麼步驟?php:不能修改函數中的數組?

<?php 

$arr1 = array(); 

modArr($arr1); 
$arr1['test'] = 'test'; 
var_dump($arr); 

function modArr($arr){ 
$arr['item1'] = "value1"; 
$arr['item2'] = "value2"; 
return; 
} 

回答

10

要修改的數組它存在於函數範圍中,而不是全局範圍。您需要從函數返回修改過的數組,使用global關鍵字(不推薦)或將數組按參考值傳遞給函數,而不是值。

// pass $arr by reference 
$arr = array(); 
function modArr(&$arr) { 
    // do stuff 
} 

// use global keyword 
$arr = array(); 
function modArr($arr) { 
    global $arr; 
    //... 
} 

// return array from function 
$arr = array(); 
function modArr($arr) { 
    // do stuff to $arr 
    return $arr; 
} 
$arr = modArr($arr); 

要了解有關變量範圍的更多信息,請檢查PHP docs on the subject

2

你必須按引用傳遞$arrfunction modArr(&$arr)

編輯:注意到在你的代碼中的錯誤:你逝去的modArr($arr1);但試圖輸出$arr