2010-06-24 3 views
1

Я использую массив для хранения имен других массивов, которые динамически генерируются в другом месте. Мне нужно пройти через массив имен и получить доступ к содержимому массивов «named». Что-то вроде этого:Обратные переменные переменные?

$names = array("one", "two", "three"); 
$one = array("a", "b", "c"); 
$two = array("c", "d", "e"); 
$three = array("f", "g", "h"); 
foreach ($process_array in $names) { 
    // how to access the contents of $one, $two and $three using only $names?? 
} 

Я Preety уверен, что я должен быть в состоянии использовать переменные переменные так или иначе, но все примеры, которые я прочитал показать логическую инверсию, что я пытаюсь сделать (если я Непонимание основных принципов - вполне возможно!)

Большое спасибо за любой совет.

+0

Да, вы неправильно поняли переменные. Они делают именно то, что вы хотите. –

ответ

3
$names = array("one", "two", "three"); 
$one = array("a", "b", "c"); 
$two = array("c", "d", "e"); 
$three = array("f", "g", "h"); 
foreach ($names as $name) { 
// how to access the contents of $one, $two and $three using only $names?? 
print_r(${$name}); 
} 
+0

Похоже, я думал об этом слишком сильно, и ответ смотрел мне в лицо. Все ответы правильные, спасибо y'all! – user211433

2

PHP имеет функцию variable variables:

foreach ($names as $name) { 
    $$name; 
} 

Для только переменных, которые вы можете использовать синтаксис выше ($$name). Если вы хотите использовать выражение для обозначения переменных, используйте синтаксис скобки, например ${"foo".$name}.

1

Нравится?

foreach ($names as $name) { 
    var_dump($$name); // do something else 
} 
0
$names = array("one", "two", "three"); 
$one = array("a", "b", "c"); 
$two = array("c", "d", "e"); 
$three = array("f", "g", "h"); 

foreach ($names as $name) { 
    foreach ($$name as $value) { 
    // $value contains the array values. 
    } 
} 

Чтобы заметить это foreach ($array as $value), не foreach ($value in $array).