2017-08-29 129 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