2012-02-27 62 views
2

我有試圖建構一個變量名時,這個問題 (應該輸出相應的數組元素。)PHP(復)動態變量名施工

我開始設置變量用於測試目的,通常這個片段變量會保存數組$ piece的第一個元素。

$wordnumber = 0; 
$piece[0] = "forever"; 

我稍後在我的問題之前回應他們,看他們是否還好。

echo "$piece[0]"; 
echo "$wordnumber"; 

輸出正常。

forever0 

但隨後而來的問題,我想作出這樣的自動處理每一個數組元素的功能,所以我希望它每次構建下一個相應的變量。 但是不知何故,施工後它沒有價值

$name = ${'piece[' . $wordnumber . ']'}; 
echo "$name"; 

輸出什麼...

我已經嘗試了很多不同的格式,我真的不知道爲什麼我沒有這麼難在這裏。 該代碼不是任何功能的一部分,現在順便說一句。

更新: $名稱= $片[$ wordnumber]解決了我很好奇,至於爲什麼會如預期我以前的格式不工作的問題 。

更新:問題由André解決,問題是$ piece [0]實際上並不是數組的一部分。所以$ piece是實際的變量。存儲實際數組$ piece = array(「Redish」,「Yellow」,「Green」);在開始時使用全局$ piece;在我的功能中,一切都開始像魅力一樣工作。

+0

可能重複。 PHP變量變量語法不支持數組索引訪問。閱讀我的完整我的答案(與解決方案)在這裏:http://stackoverflow.com/questions/9374292/variable-name-as-variable/9374603#9374603 – Kaii 2012-02-27 18:45:48

+0

看來我沒有足夠好的搜索現有問題只是發現這種格式$ myTempArr [$ key];在[鏈接](http://stackoverflow.com/questions/3235632/dynamic-access-to-a-php-array) 所以我把它改爲$ name = $ piece [$ wordnumber];現在它就像一個永恆的魅力一樣運作。 – Happy 2012-02-27 18:56:19

+0

雖然我的問題仍然存在,爲什麼$ {piece [0]}與我顯然不知何故的構造不起作用。我想我很奇怪。 – Happy 2012-02-27 19:01:10

回答

1

我沒有測試的代碼,但我覺得你的第一種方法沒有奏效,因爲你的變量的名稱爲「個」,而不是「一片[0]」。換句話說,${'piece'}[0]應該可以工作,但是${'piece[0]'}是錯誤的。嘗試在腳本的開頭添加此代碼,PHP應該會向您顯示一些投訴:

error_reporting(E_ALL); 
ini_set("display_errors", 1); 
+0

非常好André!聰明的思考!對我來說非常有教育意義。 問題確實在變量不是一個真正的數組! 我把它改成了$ piece = array(「Red」,「Yellow」,「Green」,「Blue」,「Indigo」);現在一切都像魅力一樣。 – Happy 2012-02-27 20:07:37

+0

謝謝你的客氣話。如果我的回答對你來說已經足夠了,請將其設置爲你接受的答案;] – 2012-02-27 20:37:18

1

儘量只$name = $piece[$wordnumber];echo $name
這將輸出"forever"

+0

是的,這是正確的,它也適用於這樣的$ piece [$ wordnumber] btw。我同時尋找我的第一個格式化功能障礙背後的原因。 – Happy 2012-02-27 19:05:45

+0

數組的檢測器('[]')不應包含在我認爲的字符串中。因此$ {'parts'} [$ wordnumber]起作用。 – 2012-02-29 04:42:36