Языки программирования

Переменные в PHP

Когда выполняется код, нам надо где-то хранить промежуточные результаты и другие данные. Для этого в программировании используются переменные. В переменной можно сохранить какое-то число или строку. У каждой переменной есть имя, и она обозначается конструкцией вроде $daysPassed (в начале всегда ставится знак доллара). Название (daysPassed — «прошлоДней») придумывает программист. Чтобы сохранить значение в переменной, используется оператор =.

Например:
$daysPassed = 10;
Эта команда создает переменную $daysPassed и кладет в нее число 10. Теперь можно вывести это значение с помощью echo:
echo $daysPassed; → напечатает 10
Имя переменной начинается с буквы или символа подчеркивания и состоит из букв, символов подчеркивания, цифр или других ASCII-символов в интервале от 127 до 255.

Область видимости переменных

Область видимости определяется как область доступности переменной в той программе, в которой она была объявлена. В зависимости от области видимости переменные РНР делятся на четыре типа:

1. Локальные переменные

Переменная, объявленная внутри пользовательской функции, считается локальной. На нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из пользовательской функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.
<?php
  
  /* глобальная область видимости */
    
  $age = 30;  // присвоить переменной age значение 30

  function birth() {
    // присвоить переменной age значение 1
    $age = 1;  // это локальная переменная - она видна только внутри функции
  }
     
  // Вызов функции
  birth();
     
  // выводим значение переменной age
  echo $age;  // => 30
   
?>
Внутри функции birth выполняется присваивание переменной $age значения 1, но это не таже самая переменная, что была определена в глобальной области видимости. Поэтому, когда выполняется вывод на экран значения переменной $age, выводится первоначальное значение 30.
 <?php

  /* глобальная область видимости */
    
  $age = 30;  // присвоить переменной age значение 30
  
  function birth() {
   
    $age = 1;  // это локальная переменная - она видна только внутри функции
    
    echo $age;  // выводим значение переменной внутри функции
    
  }
   
?>
Теперь мы вывели значение переменной $age внутри функции. Она выведит «1» т.к. мы обращаемся к локальной переменной.

2. Параметры функций

В РНР, как и во многих других языках программирования, любые параметры, передаваемые функции при вызове, должны быть объявлены в заголовке функции. Хотя параметрам присваиваются аргументы, переданные извне, после выхода из функции они становятся недоступными.
Параметры объявляются в круглых скобках после имени функции. Объявление параметров практически не отличается от объявления типичной переменной:
// Функция умножает переданное значение на 10 и возвращает результат
function x10($value) {
  $value = $value * 10;
  return $value;
}

3. Глобальные переменные

Глобальные переменные позволяют вам пересекать границы между функциями, чтобы обращаться к значениям переменных. Ключевое слово global указывает, что данная переменная будет той же самой переменной повсюду в программе, то есть глобальной переменной. Изменение глобальной переменной внутри функции можно наблюдать за ее пределами. Не существует никаких ограничений на количество глобальных переменных, которые могут обрабатываться функцией:
<?php
 
  // присвоим переменной age значение 30
  $age = 30;
 
  // определяем функцию
  function birth() {
    // определить переменную как глобальную
    global $age;
      
    // увеличиваем значение переменной age на 1
    $age = $age + 1;
  }
  // вызываем функцию
  birth();
 
  //выводим значение переменной age
  echo $age;
  
?>
В результате исполнения этого кода будет выведено: 31.
Глобальные переменные следует использовать в редких случаях, поскольку легко изменить значение переменной по ошибке, не предусмотрев последствий.

4. Статические переменные

Статические переменные — это переменные, которые не исчезают после завершения работы функции. Значение статической переменной можно использовать при следующем вызове функции — она по прежнему будет иметь то же значение, которое получила при последнем вызове функции. Статическая переменная объявляется с помощью ключевого слова static. При объявлении статической переменной в функции создается постоянное хранилище, в результате чего статическая переменная запоминает свое последнее значение.
<?php
 
  // определение функции
  function birth() {
    // определяем переменную age как статическую
    static $age = 0;
     
    //увеличиваем значение age на 1
    $age = $age + 1;
     
    // выводим на экран значение переменной
    echo "Значение статической переменной: $age";
  }
 
  // вызываем дважды функцию
  birth();
  birth();
 
?>
Будет выведено:
Значение статической переменной: 1
Значение статической переменной: 2
Значение переменной $age сохраняется между вызовами функции birth. Это значение будет существовать, пока выполнение программы не завершится.
Cтатические переменные имеют одну особенность, во время объявления переменной, ей может быть присвоено только статическое значение. Попытка присвоить этим переменным значения, являющиеся результатом выполнения работы выражений, вызовет ошибку обработки.

Переменные в переменных

В некоторых ситуациях бывает удобно использовать переменные, содержимое которых может динамически интерпретироваться как имя другой переменной.
<?php
$a = "hello";
?>
Переменная берет значение переменной и рассматривает его как имя переменной. В вышеприведенном примере hello может быть использовано как имя переменной при помощи двух знаков доллара. То есть:
  <?php
$$a = "world";
?>
Теперь в дереве символов PHP определены и содержатся две переменные: $a, содержащая «hello», и $hello, содержащая «world». Таким образом, выведем:
<?php
echo "$a ${$a}";
?>
И также выведем:
 <?php
echo "$a $hello";
?>
Они обе выведут: hello world.

Стандартные переменные

В РНР поддерживается ряд стандартных переменных, предоставляющих в распоряжение программиста довольно подробную информацию о внутренней конфигурации. Значения одних переменных задаются РНР, другие изменяются в зависимости от операционной системы и web-сервера, с которыми работает РНР.
Чтобы получить полный список переменных web-сервера, окружения и РНР, определенных для вашей конфигурации системы, достаточно выполнить следующий код:
while(list($var,$value) = each($GLOBALS)) :
  echo "<BR>$var => $value";
endwhile;
Стандартные переменные содержат разнообразные сведения — как полезные, так и не очень.

Для закрепления материала попробуйте самостоятельно создать и вывести переменные любой сложности.
Самоучитель по PHP