不能直接使用。 $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