作者saininniang (sob)
看板PHP
標題[請益] 自定函式無法更改陣列值?
時間Sun Dec 17 22:06:58 2006
<?
$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