2012-03-28 3 views
0

Я хочу иметь возможность передать строку ("['parent_array'] ['child_array']") функции, которая затем вытаскивает эту строку и «my_array» перед ней а затем создает переменную переменную.Переменная переменная, построение переменной массива

Затем внутри функции i print_r (строка $$) и ничего не выходит. См. Код ниже для лучшего объяснения.

// DOES NOT WORK 
$string1 = "my_array['parent_array']['child_array']"; 
print_r($$string1); //prints nothing. 

// WORKS 
$string2 = "test"; 
$test = "This will be printed!"; 
print_r($$string2); //prints "This will be printed! 

// WORKS 
print_r($my_array['parent_array']['child_array']); 
+2

Могу ли я спросить, почему вы строите переменные таким образом? Я мог бы поставить большую сумму денег за более разумный подход, чем переменные переменных * (содрогания) *. – JJJ

+2

и/или eval, я готов поспорить, что один из ответов позже рекомендовал бы использовать eval –

+2

@andreas Не успел сказать, как сделать ... – JJJ

ответ

0

Переменные переменные являются уродливыми, уродливыми взломами.

Использование eval.

Пример:

$expr = "\$my_array['parent_array']['child_array']"; 
$val = 'not assigned'; 
eval("\$val = $expr;"); 
print_r($val); 

Но, пожалуйста, следуйте их предупреждения об опасности evaling предоставленный пользователем код.

Обновлено: с примером

+0

Могу ли я привести пример, как это будет выглядеть? – halliewuud

+2

Оба уродливые хаки ИМХО. Практически всегда есть лучшее решение. Реальный вопрос для OP: почему, по-вашему, вам это нужно? – PeeHaa

+0

@RepWhoringPeeHaa посмотреть здесь: http://pastebin.com/bBS4iiMC Я хочу иметь возможность передать переменную функции, заменяющей «строка29» $ arrXml ['Assignments'] ['Assignment'] " – halliewuud

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