2015-07-29 3 views
2

Я определил массив $array[1][1][test]="hello world". Я хотел бы получить это значение, используя переменные переменные. Я попытался это, но безуспешно:Переменная переменная для массива

$var1="array"; 
$var2="[1][1]"; 
$var3="['test']"; 

echo ${$var1}{$var2}{$var3}; 

Выход null.

+3

См. [Страница руководства для переменных переменных] (http://php.net/manual/en/language.variables.variable.php) Я не думаю, что вы можете поместить знаки в эту концепцию. – RiggsFolly

+0

Итак, вы объявляете многомерный массив, и вы хотели бы отображать значения? –

+0

Если вы действительно * действительно хотите сделать это, вы можете использовать 'echo eval (" return \ $$ var1 $ var2 $ var3; ")'. Однако я бы настоятельно советовал ему. – Phylogenesis

ответ

0

Я не понимаю ваш вопрос

Если вы получаете вар попробовать это:

echo $array[1][1][test]; 

"более динамично":

$i = 1; 
$x = 'test'; 

echo $array[$i][$i][$x]; 
+1

ОП запрашивает решение с использованием переменных переменных. – vhu

0

PHP manual не распространяется на использование переменной -переменные индексы массива слишком тщательно, но в комментариях упоминается, что они не работают так, как вы это выяснили.

Некоторые обходные предусмотрены, хотя:

$array[1][1]['test']="hello world" 

$var1="array"; 
$var2="[1][1]"; 
$var3="['test']"; 

$tmp=$var1.$var2.$var3; 

eval('echo $'.$tmp.';'); 

выше результатов в ожидаемом 'привет мир' продукции. Тем не менее, я бы отказался от использования eval() в любом коде.

Comment (по нику в customdesigns dot ca, датированный 2006 годом) на странице руководства также предоставляет функцию, которая может обрабатывать переменные массивы с индексами.

+0

Прочитайте [** ВНИМАНИЕ ** на странице руководства] (http://php.net/manual/en/function.eval.php), прежде чем думать об использовании. – RiggsFolly

+0

Хорошая ссылка на комментарий ников. Гораздо лучшая идея, чем 'eval()' – RiggsFolly

Смежные вопросы