Как создать переменную из другого имени переменной? - PullRequest
2 голосов
/ 20 марта 2009

ок ... в php как мне это сделать? учитывая следующий сценарий:

// array of letters
var $letters = array('a', 'b', 'c');
// loop through array and create empty arrays with names like $a, $b, $c
foreach($letters as $letter) {
    var $$letter = array();
}

Ответы [ 3 ]

3 голосов
/ 20 марта 2009

Ваш код был почти верным. Вам просто нужно убрать 'var' во 2-й и 5-й строках.

// array of letters
$letters = array('a', 'b', 'c');
// loop through array and create empty arrays with names like $a, $b, $c
foreach($letters as $letter) {
    $$letter = array();
}

Это работает правильно (как вы описали). Я проверял это.

Подробнее информация о переменных переменных здесь .

Кроме того, я бы рекомендовал не использовать eval () в вашем PHP.

2 голосов
/ 20 марта 2009

Вы, вероятно, не хотите этого делать. Желание использовать переменные переменные обычно является признаком неспособности понять структуры данных и / или чрезмерной сообразительности. Если вы действительно хотите это сделать, вы можете сказать что-то вроде ...

extract(array_fill_keys($letters, array()));

... но было бы лучше, если бы ты этого не сделал. Использование вложенных массивов, вероятно, гораздо лучшая идея, тем более что вы можете просто сказать $nested['a'][] = 5 и PHP добавит значение в массив, создавая его, если ничего не будет. С другой стороны, вы можете просто сказать $varname['key'] = 123, и снова PHP автоматически создаст для вас массив.

0 голосов
/ 20 марта 2009

Проверьте функцию eval (): Eval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...