2017-08-29 78 views
0

使用聲明變量作爲下面顯示的數組索引時,我無法獲取數組內容。使用變量的PHP數組索引

$indexes = "[0][1][0][1]"; 
$code = $params["smv_code"].$indexes; 

此返回一個 「陣列到字符串轉換錯誤」;

請注意,$索引是動態的,取決於數組索引的「parent_0_1_0_1」params內容。

+0

這是非常不清楚的,你究竟想要做什麼,以及你的代碼應該做什麼? – ElefantPhace

+0

他非常清楚他想要做什麼 - 他正在嘗試使用代碼表示法瀏覽多維數組。 – PressingOnAlways

+0

除了他不是......他究竟在尋找什麼價值? 'parent_0_1_0_1'的值或'$ params ['smv_code'] [0] [1] [0] [1]的值' – ElefantPhace

回答

1

.運營商只是做一個string concatenation - 它不會爲這樣的代碼工作。我不認爲PHP有​​能力解釋這樣的原始代碼 - 至少不安全。 (你總是可以使用eval,但是使用類似的東西存在嚴重的安全問題 - 注入等)。

我會建議只通過解釋索引自己遍歷數組「手動」。更改$indexes"0,1,0,1"並執行以下操作:

$index_array = explode(',',$indexes) 
$code = $params["smv_code"]; 
foreach($index_array as $i) { 
    $code=$code[$i]; 
} 

$code末應該是你正在尋找的價值。

+0

這解決了我的問題,只是想問問它是否嘗試將參數轉換爲(object)並使$索引「 - > 0-> 1-> 0-> 1」,並嘗試這一個$ params-> smv_code {$ indexes}將這可能嗎? –

+0

不,PHP不是那樣的動態。抱歉。如前所述,唯一的方法(就我所知)是使用'eval()'函數,比如發佈在註釋中的嚮導......但是如果你能夠正確地製作參數來開啓自己的攻擊其他代碼。 – PressingOnAlways