Intereting Posts
Как вытащить определенные значения ключа из массива внутри массива MySQL геопространственный поиск с использованием формулы haversine возвращает null в той же точке Фильтр SQL и PHP Добавление ненавязчивого индикатора прогресса в загрузку файлов старой школы Установить зависимость (доктрина / dbal) на композитор laravel Возвращение JSON из PHP в JavaScript? В PHP сравните два массива, затем создайте новый массив на основе определенной структуры? Как создать ссылку для профиля пользователя, например facebook для моей веб-страницы Изменить шрифт, используемый ImageString Проблема PHP SCRIPT с передачей загруженного изображения в функцию facebook-> api Разница между 2 временными метками – PHP Оптимальный дизайн для базы данных с повторяющимся событием Версия библиотеки PCRE слишком старая Как установить Php5.6 в amazon linux PHP. Используйте cURL для отправки информации на другую страницу.

имя исходной переменной передается функции?

Возможные дубликаты:
PHP: получить имя переменной, переданное как аргумент
Как получить имя переменной как строку в PHP?

Если бы у меня был

$abc = '123'; function write($var){ } 

Как бы я внутри write узнал, что переменная, представленная теперь $var называется $abc ?

Solutions Collecting From Web of "имя исходной переменной передается функции?"

Это невозможно. Даже передача по ссылке вам не поможет. Вам нужно будет передать имя в качестве второго аргумента.

Но то, что вы попросили, безусловно, не является хорошим решением вашей проблемы.

Вы не можете получить имя переменной, но если вы хотите его для отладки, вы можете использовать встроенный debug_backtrace() PHP, и я также рекомендую взглянуть на Xdebug .

С помощью этой функции вы можете получить некоторые данные о вызывающем, включая номер файла и строки, чтобы вы могли найти эту строку вручную после запуска скрипта:

 function debug_caller_data() { $backtrace = debug_backtrace(); if (count($backtrace) > 2) return $backtrace[count($backtrace)-2]; elseif (count($backtrace) > 1) return $backtrace[count($backtrace)-1]; else return false; } 

Полный пример:

 <?php function debug_caller_data() { $backtrace = debug_backtrace(); if (count($backtrace) > 2) return $backtrace[count($backtrace)-2]; elseif (count($backtrace) > 1) return $backtrace[count($backtrace)-1]; else return false; } function write($var) { var_dump(debug_caller_data()); } function caller_function() { $abc = '123'; write($abc); } $abc = '123'; write($abc); caller_function(); 

Разумеется, это невозможно без создания для него расширения PHP.

Вы, конечно, не хотите полагаться на это, особенно в функции. Функция не должна работать вне своей области (за исключением глобальных, но я их ненавижу).

Этот ответ дает некоторые предположения:

  1. что он работает (я его не тестировал)
  2. что вы передаете только переменные, объявленные глобально
  3. что передаваемая переменная является уникальной или объектом .

Обратите внимание, что функция использует проход по ссылке. Я предполагаю, что это будет необходимо для точного сравнения объектов.

 function write(&$var) { $varname = null; foreach ($GLOBALS as $name => $val) { if ($val === $var) { $varname = $name; break; } } } 

Есть ли конкретная причина, по которой вам нужно имя var? Возможно, лучшее решение.

† Добавлен акцент на предположение № 3