Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: использую значение переменной в качестве имени другой переменной  (Прочитано 7574 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 18-09-2005 13:01 » 

Пытаюсь сделать так
Код:
$array_table[]="first";
$array_table[]="second";

$first[]=1;
$first[]=2;
$first[]=3;

$second[]=1;
$second[]=2;
$second[]=3;

print $($array_table[1])[1]  ///Здесь выводит ошибку, жалуется на скобку
print $$array_table[1][1];  //здесь ничего не выводит
print "$$array_table[1][1]";// здесь выводит - $second[1] вместо 2.

Почему это дело не работает, может надо поменять какие-то настройки. Даже в какой-то книжке для чайников вычитал, что так можно делать, только там были не массивы, а обычные переменные, вот выдержка от туда
Цитата
Переменные в переменных
В некоторых ситуациях бывает удобно использовать переменные, содержимое которых может динамически интерпретироваться как имя другой переменной. Рассмотрим типичный случай присваивания:
$recipe = "spaghetti";
Оказывается, строку "spaghetti" можно интерпретировать как имя переменной — для этого в команде присваивания перед именем исходной переменной ставится второй знак $:
$$recipe = "& meatballs";
Эта команда присваивает строку "& meatballs" переменной с именем "spaghetti". Следовательно, следующие две команды выводят одинаковые результаты:
print $recipe $spaghetti;
print $recipe $($recipe);
В обоих случаях будет выведена строка "spaghetti & meatballs".

Записан

ещё один вопрос ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-09-2005 20:11 » 

Пытаюсь сделать так
Код:
$array_table[]="first";
$array_table[]="second";
...
print $($array_table[1])[1] ///Здесь выводит ошибку, жалуется на скобку
print $$array_table[1][1]; //здесь ничего не выводит
print "$$array_table[1][1]";// здесь выводит - $second[1] вместо 2.
1) конструкции $()  в php нет.
2) а сам то понял, чего хотел?
3) кавычки не помогут...

Вывод: ЧИТАЙ ДОКУМЕНТАЦИЮ!!!!!!!
Ничего больше сказать нельзя.

Код:
print "$array_table[0]<BR/>";
first
« Последнее редактирование: 18-09-2005 20:13 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
s_n
Постоялец

ru
Offline Offline

« Ответ #2 : 19-09-2005 09:11 » 

Книжки для чайников (да и не для чайников) часто грешат опечатками, для получения более достоверной информации надо обращаться к первоисточникам: http://www.php.net/manual/ru/language.variables.php
Принцип верный, но вместо круглых скобок следует использовать фигурные, в твоем случае:
print ${$array_table[1]}[1];
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 19-09-2005 12:07 » 

S_n, да, я потом уже разобрался, спасибо.
Записан

ещё один вопрос ...
schnibbl
Гость
« Ответ #4 : 28-09-2005 13:45 » new

ну без скобок тоже работает, по крайней мере такой код:

$name="perem1";
$perem1=10;
print($$name);

выведется 10.
а в массиве такая штука:

print(${$array_name}[2]);
« Последнее редактирование: 28-09-2005 13:46 от schnibbl » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines