2012-09-18 73 views
0

我有一個看起來像一個數組...設置多維數組值

$arr = array(
    array(
     "server_name" => "server_a", 
     "server_number" => "1", 
     "server_status" => "OPEN" 
    ), 
    array(
     "server_name" => "server_b", 
     "server_number" => "2", 
     "server_status" => "CLOSED" 
    ) 
); 

我想通過以下方式

foreach($arr as $a){ 
    $a['server_status'] = "STATUS_".$a['server_status']; 
} 

設置「server_status」的索引值這似乎不是正確的方式來設置數組值,因爲似乎沒有任何事情發生,執行此任務的正確方法是什麼?

回答

1

您需要通過引用遍歷:

foreach($arr as &$a) { 
    $a['server_status'] = ...; 
} 

(從您的代碼的唯一區別是之前的foreach $ a的&

只是不要忘記迭代後取消設置參考:

unset($a); 

否則,稍後在代碼中寫入此變量將覆蓋數組的最後一個元素。

請參閱foreach文檔。

1

你需要參考的foreach,像這樣:

foreach($arr as &$a){ 
    $a['server_status'] = "STATUS_".$a['server_status']; 
} 

否則它不會修改當前迭代的項目 - 它的一個副本。