Синтаксические конструкции: выражение как основа кода

Раздел: Разработка на PHP -> Основы PHP

Что такое выражение в PHP

Выражение (expression) в PHP - это любая конструкция, которая вычисляется в некоторое значение. Практически всё, что вы пишете в PHP-коде, является выражением: числа, строки, переменные, вызовы функций, операции сложения, сравнения и так далее.

Например, запись 5 - это выражение, возвращающее целое число 5. Переменная $a - выражение, возвращающее текущее значение переменной. А $a + $b - выражение, которое сначала получает значения $a и $b, затем складывает их и возвращает результат.


<?php
$num = 10;
echo $num + 5; // выражение $num + 5 вычисляется в 15
?>
  

Php форматы данных (форматы данных в php (json, xml, serialize))

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

Типичная ошибка: путаница оператора присваивания = и сравнения == в условиях. Присваивание тоже выражение - оно возвращает присвоенное значение, поэтому if ($a = 5) всегда истинно, что часто ведёт к логическим ошибкам.

Как получить значение из переменной или константы?

Самый простой вид выражения - это литерал (число, строка, true/false, null) или переменная. Они сразу возвращают своё значение.


<?php
$name = 'Анна';
$age = 25;
echo $name;    // выражение $name вернёт 'Анна'
echo null;    // выражение null вернёт null
?>
  

Php null false (null и false в php)

Проблема может возникнуть, если переменная не определена - PHP сгенерирует предупреждение (notice), а выражение вернёт null.

Чтобы избежать ошибок, перед использованием проверяйте существование переменной через isset() или используйте оператор null-коалесценции (??), который тоже является выражением.

Как выполнить математические операции в выражении?

Арифметические операторы (+, -, *, /, %) образуют выражения, которые вычисляют числовой результат.


<?php
$a = 10;
$b = 3;
$sum = $a + $b;       // 13
$diff = $a - $b;      // 7
$product = $a * $b;   // 30
$quotient = $a / $b;  // 3.333...
$remainder = $a % $b; // 1
echo $sum;
?>
  

Php get started (начало работы с php)

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


<?php
$result = (2 + 3) * 4; // 20
echo $result;
?>
  

Custom index php (создание собственного index.php)

Ошибка: деление на ноль вызывает предупреждение и возвращает false или INF. Всегда проверяйте делитель перед операцией.

Как объединить строки в выражении?

Оператор конкатенации . (точка) соединяет строковые выражения.


<?php
$greeting = 'Привет, ' . 'мир!'; // 'Привет, мир!'
$fullName = 'Иван' . ' ' . 'Петров';
echo $fullName;
?>
  

Php структура данных (изучение структур данных в php)

Переменные можно подставлять в строки двойных кавычках - это тоже строковое выражение с интерполяцией.


<?php
$name = 'Мария';
echo "Здравствуйте, $name!"; // выражение вычисляется в 'Здравствуйте, Мария!'
?>
  

Php добавить переменную (добавление переменной php)

Частая ошибка: попытка конкатенации через + для строк - это сложение, а не объединение, и приводит к неявному преобразованию строк в числа.

Как проверить условия с помощью логических выражений?

Логические операторы (&&, ||, !) работают с выражениями, возвращающими true или false. Они часто используются в if, while и других управляющих конструкциях.


<?php
$age = 20;
$hasLicense = true;
if ($age >= 18 && $hasLicense) {
    echo 'Можно водить';
}
?>
  

Default php file (файл по умолчанию в php)

Логические операторы используют короткое замыкание (short-circuit): если результат уже определён, остальные части не вычисляются. Это может влиять на побочные эффекты, например, вызовы функций.


<?php
function foo() {
    echo 'foo called';
    return false;
}
if (true || foo()) { // foo() не будет вызвана
    echo 'условие истинно';
}
?>
  

Php return file (возврат файла из функции в php)

Как присвоить значение и использовать его в том же выражении?

Оператор присваивания = возвращает присвоенное значение. Это позволяет использовать присваивание внутри других выражений, хотя это не всегда улучшает читаемость.


<?php
$a = 5;
$b = ($a = $a + 1) * 2; // $a становится 6, $b = 12
echo $b;
?>
  

File php query (запрос к файлу в php)

Комбинированные операторы присваивания (+=, -=, .= и др.) также возвращают новое значение.


<?php
$x = 10;
$x += 5; // эквивалентно $x = $x + 5, возвращает 15
echo $x;
?>
  

File c index php (файл index.php в php)

Злоупотребление присваиванием в условиях часто приводит к труднонаходимым ошибкам. Лучше использовать отдельные операторы.

Как выбрать значение по условию в одну строку (тернарный оператор)?

Тернарный оператор ?: - это выражение, возвращающее одно из двух значений в зависимости от условия.


<?php
$age = 17;
$status = ($age >= 18) ? 'взрослый' : 'несовершеннолетний';
echo $status;
?>
  

Php название файла (правила именования файлов в php)

Существует сокращённая форма ?? (null-коалесценция) и ?: (элвис-оператор).


<?php
$username = $_GET['user'] ?? 'гость'; // если $_GET['user'] не установлен или null, вернёт 'гость'
echo $username;
?>
  

Php file array (массив файлов в php)

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

Как использовать результат функции как выражение?

Вызов функции - это выражение, возвращающее значение, которое функция возвращает через return. Функции, не возвращающие явно значение, возвращают null.


<?php
function square($n) {
    return $n * $n;
}
$result = square(5) + 1; // 26
echo $result;
?>
  

Php пример языка (примеры кода на php)

Методы объектов, статические методы, вызовы конструкций, таких как array_map, тоже являются выражениями.

Как выражения применяются в управляющих конструкциях?

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


<?php
$i = 0;
while ($i < 10) { // условие - выражение $i < 10
    echo $i++;
}
?>
  

синтаксис языка php (синтаксис языка php)

Сложное выражение может быть записано прямо в условии:


<?php
if (($a = someFunction()) && $a > 0) {
    echo $a;
}
?>
  

Из-за приоритета операторов скобки вокруг присваивания обязательны. Иначе присваивание выполнится после сравнения, что приведёт к ошибке.

- Php язык программирования код (php как язык программирования (примеры кода))
- Php true false (true и false в php)
- язык разработки php (php (язык разработки))

Расширенные примеры выражений

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

Инкремент и декремент как выражения

Пример

<?php
$a = 5;
$b = $a++;   // пост-инкремент: $b = 5, $a = 6
$c = ++$a;   // пре-инкремент: $a = 7, $c = 7
echo "b=$b, c=$c, a=$a";
?>
b=5, c=7, a=7

Пост-инкремент возвращает старое значение, пре-инкремент - новое. Это важно, когда выражение используется в составе другого выражения.

Комбинированные операторы присваивания с разными типами

Пример

<?php
$text = 'Hello';
$text .= ' world';   // .= возвращает 'Hello world'
$lines = 0;
$lines += 5;          // 5
$value = 10;
$value %= 3;          // 1
echo $text . ', lines=' . $lines . ', value=' . $value;
?>
Hello world, lines=5, value=1

Каждый такой оператор возвращает новое значение, которое можно использовать дальше.

Побитовые выражения

Пример

<?php
$a = 6;   // 110 в двоичной
$b = 3;   // 011
$and = $a & $b;   // 010 = 2
$or  = $a | $b;   // 111 = 7
$xor = $a ^ $b;   // 101 = 5
$not = ~$a;       // ...11111001 = -7 (при 32-битном int)

echo "and=$and, or=$or, xor=$xor, not=$not";
?>
and=2, or=7, xor=5, not=-7

Побитовые операции полезны для работы с флагами и упаковки данных.

Выражение с оператором spaceship (<=>)

Пример

<?php
echo 1 <=> 2; // -1, так как 1 меньше 2
echo 2 <=> 2; // 0
echo 3 <=> 2; // 1
?>
-101

Возвращает -1, 0 или 1. Удобно для сортировок.

Выражения с массивами

Доступ к элементу массива - выражение, возвращающее значение. Можно сочетать с операторами.

Пример

<?php
$arr = [1, 2, 3];
$sum = $arr[0] + $arr[1] + $arr[2]; // 6
echo $sum;
?>

Начиная с PHP 5.4, можно разыменовывать результат функции напрямую:

Пример

<?php
function getArray() {
    return ['a', 'b', 'c'];
}
echo getArray()[1]; // 'b'
?>
b

Выражение с анонимной функцией (замыкание)

Пример

<?php
$multiply = function($x, $y) { return $x * $y; };
$result = $multiply(4, 5); // 20
echo $result;
?>
20

Анонимная функция - это выражение, которое возвращает объект типа Closure. Вызов такого выражения через скобки - тоже выражение.

Выражение с оператором instanceof

Пример

<?php
class MyClass {}
$obj = new MyClass();
$check = $obj instanceof MyClass; // true
echo $check ? 'да' : 'нет';
?>
да

Оператор instanceof возвращает true или false, его можно использовать в условиях или присваиваниях.

Выражение с генератором (yield)

Пример

<?php
function gen() {
    yield 1;
    yield 2;
}
$gen = gen(); // выражение вызова генератора возвращает объект Generator
foreach ($gen as $value) {
    echo $value;
}
?>
12

Yield - это особая форма выражения, которое возвращает значение и приостанавливает выполнение функции.

Выражение в строковом контексте (интерполяция сложных выражений)

Пример

<?php
$item = 'apple';
$count = 3;
echo "You have {$count} {$item}s"; // фигурные скобки позволяют вставлять сложные выражения
?>
You have 3 apples

Выражение с eval (не рекомендуется, но демонстрация)

Пример

<?php
$expr = '2 + 3 * 4';
$result = eval("return $expr;");
echo $result; // 14, так как eval исполняет строку как PHP-код
?>
14

Использование eval крайне не рекомендуется из-за рисков безопасности и сложности отладки.

Выражения в PHP - comments

En
выражения php (php)