我很困惑PHP變量引用是如何工作的。在下面的示例中,我希望能夠以$bar[0]
或$barstack[0][0]
訪問字符串hello。看起來,在步驟1中通過引用來傳遞數組應該足夠了。PHP變量:引用或副本
第二個示例不起作用。 $foostack[0]0]
是字符串你好,但$foo[0]
不存在。在某些時候,$ foostack的第一個元素變成了$ foo的副本,而不是引用。
問題在於步驟2的第一行:當我推入參考時,我希望關閉參考。但array_pop
代替返回副本。
其他人告訴我,如果我不得不擔心引用和副本,那麼PHP不適合我。這可能是我要得到的最好答案。
FWIW,爲了使var_dump
有用,它需要顯示區分參考和副本的某些屬性。它不是。也許還有另一個功能?
我的第一個PHP項目似乎很糟糕。有人可以幫助闡明這個代碼的 問題嗎?
<?php
echo "// This works!\n<br />" ;
// step 1
$bar = array() ;
$barstack = array(&$bar) ;
// step 2
array_push($barstack[0], 'hello') ;
// results
echo count($barstack[0]) .';' .count($bar) ;
echo "\n<br />// This doesn't :(\n<br />" ;
// step 1
$foo = array() ;
$foostack = array(&$foo) ;
// step 2
$last = array_pop($foostack) ;
array_push($last, 'hello') ;
array_push($foostack, &$last) ;
// results
echo count($foostack[0]) .';' .count($foo) ;
echo "\n<br />// Version:\n<br />" ;
echo phpversion() ."\n" ;
?>
的結果可以在以下URL被看作:
http://www.gostorageone.com/tqis/hi.php
版是4.3.10。升級服務器並不實際。
預期結果:
- 解釋顯然如果我忽略了它
- 這是一個錯誤?任何解決方法?
謝謝!
-Jim
自己發佈前檢查。你可以使用var_dump($ array),它會告訴你數組中的內容。那麼一切都會很清楚。 –
對我來說,這個問題似乎不適合StackOverflow的規則 –
@Sunny Jim - 爲了得到更好的回答,請嘗試在你的問題中添加你期望發生的事情和實際發生的事情。一半是由你的鏈接覆蓋的,但另一半則不是。 –