看板 PHP 關於我們 聯絡資訊
<? $AA=array(array(0,1,1), array(0,0,1), array(0,0,0)); $AA[0][2]=5; //更改陣列值 for ($i=0; $i<3; $i++) //檢查結果 { for ($j=0; $j<3; $j++) { echo $AA[$i][$j]; } echo "<br>"; } ?> 上面的是一般的作法,沒問題 ----------------------------------------------- 下面的才是有問題的 <? run ($AA,$ii,$jj) { $AA[$ii][$jj]=5; } ?> <? $AA=array(array(0,1,1), array(0,0,1), array(0,0,0)); run($AA, 0 , 2); //////////////??? for ($i=0; $i<3; $i++) //檢查結果 { for ($j=0; $j<3; $j++) { echo $AA[$i][$j]; } echo "<br>"; } ?> 為什麼這樣寫的話陣列值不會變更? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.142.122
foxzgerald:run(&$AA, 0 , 2) // try this 12/17 22:10
foxzgerald:it should be passed by reference 12/17 22:10
saininniang:可以work了,感謝,請問這裡的&是什麼意思? 12/17 22:22
foxzgerald:傳參考(reference)的意思. 是關於記憶體的運算子 12/17 22:26
foxzgerald:傳遞參數時,至少有傳值(by value)和參考(by reference 12/17 22:28
foxzgerald:c++ 裡頭還有傳址(by address) 12/17 22:29
foxzgerald:有興趣翻一下書.. 或是 google, wiki 一下吧 :) 12/17 22:30
foxzgerald:在傳遞參數或指定(assign)物件時. 都需要注意一下 12/17 22:32