Не напрямую. $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);
}
}
Примечание: я сделал код выше в редакторе ответов, чтобы он мог содержать опечатку или два; )