台灣最大程式設計社群網站
線上人數
936
 
會員總數:246038
討論主題:189626
歡迎您免費加入會員
討論區列表 >> PHP >> PHP問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
PHP問題
價值 : 15 QP  點閱數:537 回應數:3
樓主

shoan140
門外漢
0 14
143 12
發送站內信


為什麼輸出是$a1,而不是2。

echo "$".$c;
這行要如何改讓他輸出是2。

本篇文章發表於2015-06-04 13:21
1樓
最有價值解答

迷路
捐贈 VP 給 迷路 檢舉此回應
因為$號是變數的意思,不是單純的字元,所以不能這樣直接組合來用
我個人是認為這種需求蠻奇特的,硬要達成的話可以用陣列來完成(這是直覺想到的)
當然正規的做法是用eval()函數(因為幾乎沒用過,所以後來才想到)
範例如下
本篇文章回覆於2015-06-04 14:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

蒼天浩月
檢舉此回應
其實 不用那麼麻煩 雖然說 這樣的寫法會導致什麼後果 並不是很清楚

但這段語法 能完全你想要的....2


本篇文章回覆於2015-06-04 23:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

皮皮快跑
檢舉此回應
這段寫法唯一會導致的後果就是「變數注射」。
但就因為會有變數注射而不用嗎?倒也不是。
既然php有這樣的設計,就會有使用他需求的時候。
比方說「函式路由」。



像這樣可以經由傳遞的參數來決定跑那個路由就是一種做法。
延伸至物件也有他設計的方法。
不過要做這些設計還是要嚴謹的看待,以防一些不當的變數注射,導致程式碼的異常。

一種錯誤例子:


然後$str要是接到的值是name,變數資料就異常掉了。

比較常遇到像一些framework在拋出資料到view時。
會把陣列的key轉成變數的名稱。
所以可能會有像是


不過其實上述有一個函式可以直接替代


總之這些使用上都必須小心注意,以最嚴謹的方式去看待這些東西也就不用過度擔心了。
本篇文章回覆於2015-06-05 00:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.