Php как вывести имя переменной

Урок 3. Переменные в PHP


1. Как создать переменную PHP?
3. Вывод переменных PHP
3. Операции с переменными PHP

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

Как создать переменную в PHP

Вначале переменные содержат знак $ (доллар) — обозначение использования переменной, потом буквы латинского алфавита (от a до z и маленькие и большие), в конце могу содержать цифры. Также в названии допускается использование нижнего подчёркивания (не в конце).

Как можно называть переменные:

$var
$variable
$year1945
$_variable
Как нельзя называть переменные:

$1 — состоит только из цифры
$1var — нельзя начинать название переменной с цифры
$/var — из дополнительных символов допускается только нижнее подчёркивание _
$переменная — кириллица разрешена документацией php, но не рекомендуема
$var iable — нельзя использовать пробелы

Пробелы, какие-либо знаки, кроме нижнего подчёркивания — запрещены.
Кириллицу (русские буквы) в документации к php использовать разрешено. НО далеко не везде подобные переменные будут правильно интерпретированы, поэтому используйте только латинницу.

Каждой переменной присваивается значение. Для присвоения значения используется знак = (равно). В течение обработки скрипта значение переменной может неоднократно меняться в зависимости от разных условий.

Читайте также:  Чем отмыть чугунную батарею отопления
Имена переменных чувствительны к регистру букв: например, $name — не то же самое, что $Name или $NAME

Вывод переменных PHP

Отдельно следует разобрать то, как отобразить переменные при помощи операторов вывода, работу которых мы разобрали в прошлом уроке Создание странцы PHP. Операторы вывода. . Ниже приведу ряд наглядных примеров с комментариями.

Операции с переменными PHP

Арифметические операции в PHP
В случае с числовыми значениями можно проводить арифметические операции: сложение, вычитание, умножение и так далее.

-$a (отрицание) Смена знака $a.
$a + $b (сложение) Сумма $a и $b.
$a — $b (вычитание) Разность $a и $b.
$a * $b (умножение) Произведение $a и $b.
$a / $b (деление) Частное от деления $a на $b.
$a % $b (деление по модулю) Целочисленный остаток от деления $a на $b.
Рассмотрим примеры

Операции инкремента и декремента в PHP
Данные операции пригодятся в основном при построении циклов, о которых поговорим чуть позже.
Префиксный — операторы, прописанные ПЕРЕД переменной (—$a; ++$a). Возвращают значение переменной до изменений.
Постфиксный — операторы, прописываемые после переменной ($a—; $a—). Возвращают значение переменной с изменениями.
Инкремент — увеличения значения.
Декремент — уменьшение значения.

++$a Префиксный инкремент. Увеличивает $a на единицу и возвращает значение $a.
$a++ Постфиксный инкремент. Возвращает значение $a, а затем увеличивает $a на единицу.
—$a Префиксный декремент. Уменьшает $a на единицу и возвращает значение $a.
$a— Постфиксный декремент. Возвращает значение $a, а затем уменьшает $a на единицу.

Булевы типы (это значения типа Правда или Неправда — True False) не подлежат инкрементированию и декрементированию.
А в случае если в значении переменных символы, при инкрементировании и декрементировании будет выводить ближайшее значение по таблице символов. Например: . X,Y,Z,AA,AB,AC и так далее.

Операции присвоения в PHP
Базовый оператор выглядит как =. На первый взгляд может показаться, что это оператор равно. На самом деле это не так. В действительности, оператор присвоения означает, что левый операнд получает значение правого выражения, (т.е. устанавливается результирующим значением). Комбинированные операторы — это такие операторы, которые позволяют использовать предыдущие значения переменных для последующих операций (дописывать в строковую переменную (с текстом) или складывать числовые значения).

Существуют также операции сравнения и логические, но о них мы поговорим в следующих уроках. Постараюсь сразу не пугать Вас большим объёмом информации!)

Источник

Функции для работы с переменными

Содержание

  • boolval — Возвращает логическое значение переменной
  • debug_zval_dump — Выводит строковое представление внутренней структуры zval
  • doubleval — Псевдоним floatval
  • empty — Проверяет, пуста ли переменная
  • floatval — Возвращает значение переменной в виде числа с плавающей точкой
  • get_debug_type — Возвращает имя типа переменной в виде, подходящем для отладки
  • get_defined_vars — Возвращает массив всех определённых переменных
  • get_resource_id — Возвращает целочисленный идентификатор для данного ресурса
  • get_resource_type — Возвращает тип ресурса
  • gettype — Возвращает тип переменной
  • intval — Возвращает целое значение переменной
  • is_array — Определяет, является ли переменная массивом
  • is_bool — Проверяет, является ли переменная булевой
  • is_callable — Проверяет, что значение может быть вызвано как функция в текущей области видимости
  • is_countable — Проверить, что содержимое переменной является счётным значением
  • is_double — Псевдоним is_float
  • is_float — Проверяет, является ли переменная числом с плавающей точкой
  • is_int — Проверяет, является ли переменная целым числом
  • is_integer — Псевдоним is_int
  • is_iterable — Проверяет, является ли переменная итерируемой
  • is_long — Псевдоним is_int
  • is_null — Проверяет, является ли значение переменной равным null
  • is_numeric — Проверяет, является ли переменная числом или строкой, содержащей число
  • is_object — Проверяет, является ли переменная объектом
  • is_real — Псевдоним is_float
  • is_resource — Проверяет, является ли переменная ресурсом
  • is_scalar — Проверяет, является ли переменная скалярным значением
  • is_string — Проверяет, является ли переменная строкой
  • isset — Определяет, была ли установлена переменная значением, отличным от null
  • print_r — Выводит удобочитаемую информацию о переменной
  • serialize — Генерирует пригодное для хранения представление переменной
  • settype — Задаёт тип переменной
  • strval — Возвращает строковое значение переменной
  • unserialize — Создаёт PHP-значение из хранимого представления
  • unset — Удаляет переменную
  • var_dump — Выводит информацию о переменной
  • var_export — Выводит или возвращает интерпретируемое строковое представление переменной

User Contributed Notes 1 note

I thought the PHP developers should include in this section, the operator «identity» ( see http://php.net/manual/en/language.operators.arithmetic.php).

From an arithmetic point of view, this operator is useless but, as a converter from string to number, it is great. It does not force the numerical string to have an integer or float type, instead, it automatically determines the adequate type, depending on the numerical quantity represented by the string.

Источник

Как получить имя переменной в виде строки в PHP?

Скажем, у меня есть этот код PHP:

тогда мне нужна такая функция:

Есть идеи как этого добиться? Это вообще возможно в PHP?

Решение

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

Edit: get_defined_vars (), кажется, не работает правильно, он возвращает ‘var’, потому что $ var используется в самой функции. $ GLOBALS, кажется, работает, поэтому я изменил его на это.

Изменить: чтобы было ясно, нет хорошего способа сделать это в PHP, что, вероятно, потому, что вам не нужно это делать. Вероятно, есть лучшие способы сделать то, что вы пытаетесь сделать.

Другие решения

Я не мог придумать способ сделать это эффективно, но я придумал это. Это работает, для ограниченного использования ниже.

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

Вы могли бы подумать об изменении вашего подхода и использовании имени переменной переменной?

тогда вы могли бы просто

Никто, кажется, не упомянул фундаментальные причины Зачем это а) сложно и б) неразумно

  • «Переменная» — это просто символ, указывающий на что-то еще. В PHP он внутренне указывает на то, что называется «zval», который может фактически использоваться для нескольких переменных одновременно, либо потому, что они имеют одно и то же значение (PHP реализует нечто, называемое «копирование при записи», так что $foo = $bar не нужно сразу выделять дополнительную память) или потому, что они были назначены (или переданы функции) по ссылке (например, $foo =& $bar ). Так что у звала нет имени.
  • Когда вы передаете параметр в функцию, вы создаете новый переменная (даже если это ссылка). Вы можете передать что-то анонимное, как «hello» , но когда-то внутри вашей функции, это любая переменная, которую вы называете. Это довольно фундаментально для разделения кода: если функция полагается на переменную используемый чтобы быть названным, это было бы больше похоже на goto чем правильно отдельная функция.
  • Глобальные переменные обычно считаются плохой идеей. Многие примеры здесь предполагают, что переменная, которую вы хотите «отразить», находится в $GLOBALS , но это будет верно только в том случае, если вы плохо структурировали свой код и переменные не ограничены какой-либо функцией или объектом.
  • Имена переменных помогают программистам читать их код. Переименование переменных для лучшего соответствия их назначению — очень распространенная практика рефакторинга, и весь смысл в том, что это не имеет никакого значения.

Теперь я понимаю желание этого для отладки (хотя некоторые из предложенных вариантов использования выходят далеко за рамки этого), но в качестве обобщенного решения это на самом деле не так полезно, как вы думаете: если ваша функция отладки говорит, что ваша переменная называется «$ file «, это может быть любая из десятков переменных» $ file «в вашем коде или переменная, которую вы назвали» $ filename «, но передаете функции, параметр которой называется» $ file «.

Гораздо более полезная информация — это то, откуда в вашем коде была вызвана функция отладки. Поскольку вы можете быстро найти это в своем редакторе, вы можете увидеть, какую переменную вы выводили для себя, и даже можете передать целые выражения в нее за один раз (например, debug(‘$foo + $bar = ‘ . ($foo + $bar)) ).

Для этого вы можете использовать этот фрагмент вверху функции отладки:

Я сделал функцию проверки по причинам отладки. Это похоже на print_r () на стероидах, очень похоже на Krumo, но немного более эффективно на объектах. Я хотел добавить определение имени var и получил это, вдохновленный постом Ника Престы на этой странице. Он обнаруживает любое выражение, переданное в качестве аргумента, а не только имена переменных.

Это только функция-обертка, которая обнаруживает переданное выражение.
Работает в большинстве случаев.
Это не будет работать, если вы вызываете функцию более одного раза в одной и той же строке кода.

Это отлично работает:
умереть(осмотреть( $ This-> GetUser () -> hasCredential ( «Удалить») ));

inspect () — это функция, которая обнаружит переданное выражение.

Мы получаем: $ This-> GetUser () -> hasCredential ( «Удалить»)

Вот пример функции инспектора (и моего класса dInspect) в действии:

Тексты на этой странице на испанском, но код лаконичен и действительно прост для понимания.

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

@Alexandre — короткое решение

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

ИСПОЛЬЗОВАНИЕ: print_var_name ($ FooBar)

ПОДСКАЗКА
Теперь вы можете переименовать функцию, и она все равно будет работать, а также использовать функцию несколько раз в одной строке! Благодаря @Cliffordlife

Источник

Как получить имя переменной в виде строки в PHP?

Скажем, у меня есть этот PHP-код:

$FooBar = «a string»;

Затем мне нужна такая функция:

Любые идеи, как этого добиться? Возможно ли это вообще в PHP?

Ответ 1

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

get_defined_vars() в некоторых ситуациях работает некорректно, она возвращает var, потому что $var используется в самой функции.

foreach($GLOBALS as $var_name => $value) <

В PHP нет хорошего способа сделать это, вероятно, потому, что вам не нужно этого делать. Возможно, есть более эффективные способы сделать то, что вы пытаетесь сделать.

Ответ 2

Я не могу уверенно утверждать, как сделать это эффективно, но я придумал вот что. Это работает для ограниченного использования, как указа н о ниже.

function varName( $v ) <

$vLine = file( __FILE__ );

$fLine = $vLine[ $trace[0][‘line’] — 1 ];

preg_match( «#\\$(\w+)#», $fLine, $match );

$bar = array( 1, 2, 3 );

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

Ответ 3

Похоже, никто не упомянул основные причины, по которым это а) сложно и б) неразумно:

«Переменная» — это просто символ, указывающий на что-то еще. В PHP она внутренне указывает на что-то, называемое «zval», которое на самом деле может использоваться для нескольких переменных одновременно либо потому, что они имеют одинаковое значение (PHP реализует то, что называется «копирование при записи», поэтому для $foo = $bar нет необходимости выделить дополнительную память сразу) , либо потому, что они были назначены (или переданы функции) по ссылке (например , $foo =& $bar ).

Когда вы передаете параметр функции, вы создаете новую переменную (даже если это ссылка). Вы можете передать что-то анонимное, например , «hello» , но, оказавшись внутри вашей функции, это будет та переменная, как вы ее назовете. Это довольно фундаментально для разделения кода: если бы функция полагалась на то, как называлась переменная, она была бы больше похожа на goto, чем отдельную функцию.

Глобальные переменные обычно считаются плохой идеей. Многие примеры здесь предполагают, что переменная, которую вы хотите «отразить», может быть найдена в $GLOBALS , но это будет верно только в том случае, если вы плохо структурировали свой код и переменные не привязаны к какой-либо функции или объекту.

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

Теперь я понимаю желание использовать это для отладки (хотя некоторые из предложенных вариантов использования выходят далеко за рамки этого), но как обобщенное решение это не так полезно, как можно подумать: если ваша функция отладки говорит, что ваша переменная называется «$file», это может быть любая из десятков переменных «$file» в вашем коде, или переменная, которую вы назвали «$filename», но передаете в функцию, параметр которой называется «$file».

Гораздо более полезной информацией является то, откуда в вашем коде была вызвана функция отладки. Поскольку вы можете быстро найти это в редакторе, вы можете увидеть, какую переменную вы выводили, и даже передать в нее целые выражения за один раз (например, debug(‘$foo + $bar = ‘ . ($foo + $bar))).

Для этого вы можете использовать этот фрагмент в верхней части вашей функции отладки:

echo ‘# Debug function called from ‘ . $backtrace[0][‘file’] . ‘ at line ‘ . $backtrace[0][‘line’];

Ответ 4

Это именно то, что вам нужно , — готовая к использованию функция «скопируй и вставь», которая определяет имя заданной переменной:

// читаем обратную трассировку

// выбираем точную строку print_var_name($varname)

// извлечение $varname из совпадения №2

$var = preg_replace($pat, ‘$2’, $src);

// выводим в браузер

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Оцените статью