不能直接使用。 $myArray[$index]
将评估为$myArray['[0][1][2]']
。你可能会拥有的对每个维度单独或者写一个小功能来解释字符串:
function strIndexArray($arr, $indices, $offset = 0) {
$lb = strpos($indices, '[', $offset);
if ($lb === -1) {
return $arr[$indices];
}
else {
$rb = strpos($indices,']', $lb);
$index = substr($indices, $lb, $rb - $lb);
return strIndexArray($arr[$index], substr($indices, $rb+1));
}
}
你或许可以找到一些正则表达式更容易提取,这将导致类似的指标:
$indices = /*regex*/;
$value = '';
foreach($indices as $index) {
$value = $array[$index];
}
要设置在阵列中的下面的函数,可以使用一个值:
function setValue(&$arr, $indices, $value) {
$lb = strpos($indices, '[');
if ($lb === -1) {
$arr = $value;
}
else {
$rb = strpos($indices, ']', $lb);
$index = substr($indices, $lb, $rb);
setValue($arr[$index], substr($indices, $lb, $rb+1), $value);
}
}
注:I上面的代码中的答案编辑器中进行,因此它可能包含一个错字或两个; )
你可以用的eval()这样做,但我建议不要使用它。我们可以问为什么你想这样做?有可能是另一种方式来完成你想要的:) – Maurice 2012-02-24 15:46:27
我写一个递归函数数组变造不同的维度。如果你传递'$ array ['cow']'到一个函数中,我敢肯定你不能从该函数访问'$ array'(即使通过引用传递) – afuzzyllama 2012-02-24 15:48:28