Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические переменные. 
:(
    Опции темы
DarkAngel
Дата 17.5.2007, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.3.2005

Репутация: 1
Всего: 1



Здравствуйте, подскажите, пожалуйста, в чем может быть проблема.

Мне необходимо использование динамических переменных.
То есть

   for( $i = 0; $i < count( $rel ); $i++ )
    {
     $id_public = "id_public_" . $rel[$i];
     $sort_line = "sort_line_" . $rel[$i];

     echo "<LI>" . $$id_public;
     echo "<LI>" . $$sort_line;
    }

чтобы получить значение, например, отсюда

   [id_rel] => Array
        (
            [0] => 92
            [1] => 93
            [2] => 94
            [3] => 95
            [4] => 96
            [5] => 97
            [6] => 98
        )

    [sort_line_92] => 10
    [id_public_92] => 0
    [sort_line_93] => 0
    [id_public_93] => 0
    [sort_line_94] => 0

но

$$id_public и $$sort_line пустые.
PM MAIL   Вверх
BuShaRt
Дата 17.5.2007, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



ну, в исходных данных массив у вас $id_rel, а в коде просто $rel.

и это:
[sort_line_92] => 10
переменная или часть массива?


PM MAIL   Вверх
WolfON
Дата 17.5.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Странно, что не работает.
Логически все правильно.

Можно, конечно, попробовать так:
Код

eval("\$idpublic = \$id_public".$rel[$i]);



А лучше всего использовать массивы smile

ЗЫ. Используйте тег "Код" для подсветки кода

Это сообщение отредактировал(а) WolfON - 17.5.2007, 10:19
PM MAIL ICQ   Вверх
DarkAngel
Дата 17.5.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.3.2005

Репутация: 1
Всего: 1



> ну, в исходных данных массив у вас $id_rel, а в коде просто $rel.

Если приглядеться повнимательнее, то можно увидеть
Код


$rel = $_POST["id_rel"];

> и это:
> [sort_line_92] => 10
> переменная или часть массива?

В html это выглядит следующим образом.
В цикле я формирую перечень идентификаторов связей
Код

<INPUT TYPE="hidden" NAME="id_rel[]" VALUE="{$META_IN_RESOURCE[i].id}">

далее поля для хранения сортировки и видимости
Код

<INPUT TYPE="text" NAME="sort_line_{$META_IN_RESOURCE[i].id}"
VALUE="{$META_IN_RESOURCE[i].sort_line}" SIZE="9">
<INPUT TYPE="text" NAME="id_public_{$META_IN_RESOURCE[i].id}"
VALUE="{$META_IN_RESOURCE[i].id_public}" SIZE="1">

При приеме формы я должен получить массив идентификаторов и при проходе
генерирую имя переченной и считываю ее значение.

id_rel = > (1,2,3)

формирую переменные
$sort_line = "sort_line_" . [$id_rel];

по идее я должен получить значения sort_line_1, sort_line_2, sort_line_3
обращением к $$sort_line в соответствующей итерации цикла.

Но $$sort_line ничего не содержит.
PM MAIL   Вверх
WolfON
Дата 17.5.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Значит $sort_line_1 пустой, если не работает код:
Код

$sort_line = "sort_line_1";
if ($$sort_line === $sort_line_1) echo "Good!";
else echo "Baad ((";

PM MAIL ICQ   Вверх
BuShaRt
Дата 17.5.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(DarkAngel @  17.5.2007,  12:03 Найти цитируемый пост)
Если приглядеться повнимательнее, то можно увидетькод PHP1:$rel = $_POST["id_rel"];

Что-то я как не приглядывался - этого не увидел smile
Цитата(DarkAngel @  17.5.2007,  12:03 Найти цитируемый пост)
В html это выглядит следующим образом.

Честно говоря, я не понял как связанны изначальные данные и описанные после цитируемого поста.

Проведите пошаговую отладку и я думаю ошибка найдеться достаточно быстро, или привидите более понятные исходные данные...
PM MAIL   Вверх
Хрипа
Дата 17.5.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Код

for( $i = 0; $i < count( $rel ); $i++ )
    {
     $id_public .= "|id_public_" . $rel[$i];
     $sort_line .= "|sort_line_" . $rel[$i];

     }
 $publick = explode("|",$id_public);
 $num = count($publick);
 $sort = explode("|",$sort_line);
if ((is_int($num)) == sizeof($sort))
{
 for($i=0;$i<$num;$i++)
{
 print $publick[$i]."<br>";
 print $sort[$i]."<br>";
}
}
else
{
 $enab = 1;
for($i=0;$i<$num;$i++)
{
if ($i == sizeof($sort))
{
 $i = $i-sizeof($sort);
 $enab = 0;
}
if ($i != sizeof($sort))
{
if ($enab == 1)
{
print $publick[$i]."<br>";
}
print $sort[$i]."<br>";
}
}
}

Дело в том что денамические переменные не надёжны..
Мало ли как может проглючить Юзай массив и не Парся... Функцией сделай код будет быстрей работать ... )

Это сообщение отредактировал(а) Хрипа - 17.5.2007, 17:47
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
WolfON
Дата 17.5.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Хрипа, воздержусь от комментариев по данному коду.

DarkAngel, каким образом заносите значения в $sort_line_1 и тд?
PM MAIL ICQ   Вверх
BuShaRt
Дата 17.5.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(Хрипа @  17.5.2007,  17:42 Найти цитируемый пост)
Дело в том что денамические переменные не надёжны..

Это вы прочитали в той же книге, что и пример кода представленный?


Цитата(Хрипа @  17.5.2007,  17:42 Найти цитируемый пост)
Мало ли как может проглючить

Если код грамотный писать, то нечего не поглючит никогда...
PM MAIL   Вверх
Хрипа
Дата 17.5.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



BuShaRt, 
Коды в отличии от всяких пишу сам. Книги довно не читаю.
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
BuShaRt
Дата 17.5.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(Хрипа @  17.5.2007,  17:42 Найти цитируемый пост)
Мало ли как может проглючить


PM MAIL   Вверх
Glip
Дата 17.5.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



DarkAngel, а не позволяет ли задача заменить sort_line_92 на sort_line[92]  и т.д. на мой взгляд было бы проще

Хрипа, может я конечно туплю, но разве 
Код

for( $i = 0; $i < count( $rel ); $i++ )
    {
     $id_public .= "|id_public_" . $rel[$i];
     $sort_line .= "|sort_line_" . $rel[$i];
     }
 $publick = explode("|",$id_public);
 $sort = explode("|",$sort_line);

лучше чем 
Код

$publick = array();
$sort = array();
for ($i = 0; $i < count($rel); $i++) {
     $publick[] = "id_public_" . $rel[$i];
     $sort[] = "sort_line_" . $rel[$i];
}


Добавлено через 5 минут и 15 секунд
DarkAngel, 
Код

   for( $i = 0; $i < count( $rel ); $i++ )
    {
     $id_public = "id_public_" . $rel[$i];
     $sort_line = "sort_line_" . $rel[$i];

     echo "<LI>" . $$id_public;
     echo "<LI>" . $$sort_line;
    }

и при этом уже существуют переменные типа $sort_line_92 и т.д. ?


--------------------
user posted image
PM MAIL   Вверх
DarkAngel
Дата 18.5.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.3.2005

Репутация: 1
Всего: 1



Лан забил и перешел на массивы=) 
Спасибо всем, но все таки просто странно что так и не заработало.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0770 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.