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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать название переменной в функции, Которая передана по ссылке. 
:(
    Опции темы
Валерия
Дата 10.11.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Банальный вопрос.
Код

function test(&$var){
 echo "Значение переменной " . 
 //Вот здесь нужно вывести my
 . "равно $var";
}

$my = "123";
test($my);

PM MAIL   Вверх
Endeveit
Дата 10.11.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



PM WWW   Вверх
skyboy
Дата 11.11.2008, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



где-то уже спрашивали подобное. невозможно подобное.
PM MAIL   Вверх
Endeveit
Дата 11.11.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



skyboy, можете проследовать по моей ссылке дабы убедиться в обратном.
PM WWW   Вверх
skyboy
Дата 11.11.2008, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Endeveit, интересно, что вернет приведенная функция в ответ на
Код

function test(&$var){
 echo "Значение переменной " . 
 //Вот здесь нужно вывести my
 . "равно $var";
}
$my = "123";
$my2= &$my;
test($my2);

PM MAIL   Вверх
Endeveit
Дата 11.11.2008, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Мне кажется вполне очевидным, что она выведет "my2".
Будете придумывать очередные бессмысленные примеры, или примете тот факт, что функция свою работу выполняет?
PM WWW   Вверх
skyboy
Дата 11.11.2008, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Endeveit, приму.
PM MAIL   Вверх
skyboy
Дата 11.11.2008, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



однако, за одной оговоркой: get_defined_vars возвращает результат не по ссылке.
так что
Код

<?php
  function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
  {
    if($scope) $vals = $scope;
    else      $vals = $GLOBALS;
    $old = $var;
    $var = $new = $prefix.rand().$suffix;
    $vname = FALSE;
    foreach($vals as $key => $val) {
      if($val === $new) $vname = $key;
    }
    $var = $old;
    return $vname;
  }
  function my_local_func()
  {
    $my_local_variable = "My local string.";
    $my_second= &$my_local_variable;
    return vname($my_local_variable, get_defined_vars());
  }
  echo my_local_func();
?>

у меня возвращает "my_second".
как и 
Код

<?php
  function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
  {
    if($scope) $vals = $scope;
    else      $vals = $GLOBALS;
    $old = $var;
    $var = $new = $prefix.rand().$suffix;
    $vname = FALSE;
    foreach($vals as $key => $val) {
      if($val === $new) $vname = $key;
    }
    $var = $old;
    return $vname;
  }
    $my_global_variable = "My local string.";
    $my_second= &$my_global_variable;
    echo vname($my_global_variable);
?>

а так - да. примеры бесполезные,а функция - абсолютно работоспособная.

Добавлено через 35 секунд
впрочем, подход в любом случае достаточно интересен. таки зря мало внимания обращал на коменты в мануале.
PM MAIL   Вверх
skyboy
Дата 11.11.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(skyboy @  11.11.2008,  01:05 Найти цитируемый пост)
get_defined_vars возвращает результат не по ссылке

нет, глупости говорю.
дело не в ссылках/не-ссылках, а в том, что две переменные ссылаются на одно значение.
потому и через $GLOBALS метод не работает. так?
PM MAIL   Вверх
Endeveit
Дата 11.11.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ага.
PM WWW   Вверх
skyboy
Дата 11.11.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Валерия, тебе для отладки - вывести значение некой переменной?

Добавлено через 50 секунд
Цитата(Endeveit @  11.11.2008,  10:27 Найти цитируемый пост)
Ага. 

так все-таки, выводит функция имя переменной, которая была передана в функцию, или нет? smile
PM MAIL   Вверх
Endeveit
Дата 11.11.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  11.11.2008,  12:58 Найти цитируемый пост)
так все-таки, выводит функция имя переменной, которая была передана в функцию, или нет?

Выводит, но с некоторыми оговорками, о которых Вы сами написали выше ;)
И, да, топикстартеру на зметку: эту функцию стоит использовать только в режиме отладки.
PM WWW   Вверх
Валерия
Дата 11.11.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(skyboy @  11.11.2008,  11:58 Найти цитируемый пост)
тебе для отладки - вывести значение некой переменной?

Мне не значение переменной, а значение названия переменной которую подставили в функцию)

Endeveit, Спасибо smile
PM MAIL   Вверх
skyboy
Дата 11.11.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Валерия @  11.11.2008,  19:40 Найти цитируемый пост)
Мне не значение переменной, а значение названия переменной которую подставили в функцию)

зачем конкретно? 
PM MAIL   Вверх
Валерия
Дата 13.11.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(skyboy @  11.11.2008,  22:06 Найти цитируемый пост)
зачем конкретно?

Пишу функцию которая будет вытягывать с $_POST или $_GETзначение и фильтровать его
что бы писать не
my_get("var", $var, "post", "string");
а
my_get($var, "post", "string");

далее, если post то $_POST, get соотвественно $_GET 
если "string" то mysql_real_escape_string
если int то  (int) smile
и беру $var как ссылку что бы в неё вернуть.
Но остановлюсь на варианте с четырмя аргументами, потому что т.к работаю с ЧПУ, а там переменные p1, p2, p3 то что бы у них были нормальные имена) Сразу двух зайцев)
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.

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


 




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


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

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