PHP: Операторы исполнения — Manual

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther

Submit a Pull Request Report a Bug

PHP поддерживает один оператор исполнения: обратные кавычки («). Обратите внимание, что это не одинарные кавычки! PHP попытается выполнить строку, заключённую в обратные кавычки, как консольную команду, и вернёт полученный вывод (то есть он не просто выводится на экран, а, например, может быть присвоен переменной). Использование обратных кавычек аналогично использованию функции shell_exec().

Замечание:

Обратные кавычки недоступны, в случае, если отключена функция shell_exec().

Замечание:

В отличие от некоторых других языков, обратные кавычки не будут работать внутри строк в двойных кавычках.

Смотрите также

  • Функции для выполнения программ
  • popen()
  • proc_open()
  • Использование PHP в командной строке

add a note

User Contributed Notes 3 notes

up

down

140

robert

17 years ago

Just a general usage note.   I had a very difficult time solving a problem with my script, when I accidentally put one of these backticks at the beginning of a line, like so:

[lots of code]
`    $URL = "blah...";
[more code]

Since the backtick is right above the tab key, I probably just fat-fingered it while indenting the code.

What made this so hard to find, was that PHP reported a parse error about 50 or so lines *below* the line containing the backtick.  (There were no other backticks anywhere in my code.)  And the error message was rather cryptic:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /blah.php on line 446

Just something to file away in case you're pulling your hair out trying to find an error that "isn't there."

up

down

99

ohcc at 163 dot com

6 years ago

You can use variables within a pair of backticks (``).

<?php
    $host = 'www. wuxiancheng.cn';

    echo `ping -n 3 {$host}`;
?>

up

down

paolo.bertani

7 months ago

If you want to avoid situations like the one described by @robert you may want to disable `shell_exec` and -as a consequence- the backtick operator.

To do this just edit the `php.ini` file and add `shell_exec` to the `disable_functions` setting:

    ; This directive allows you to disable certain functions.
    ; It receives a comma-delimited list of function names.
    ; https://php.net/disable-functions
    disable_functions = "shell_exec"

Then you can still use `exec()` to run terminal commands.

add a note

Оператор эквивалентности в php

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали условный оператор в PHP. В данной статье я бы хотел рассказать о том, что такое оператор эквивалентности в PHP, и когда возникает необходимость в его использовании. PHP автоматически приводит типы. С одной стороны это хорошо, а с другой — есть шанс возникновения трудно досягаемых ошибок. Давайте рассмотрим пример, когда приведение типов работает нам на руку:

<?php $a = 5; //тип integer $b = "10"; //тип string $sum = $a + $b; echo "Сумма двух чисел = $sum"; ?>

В данном случае мы складываем целый тип со строкой. В данном случае значение переменной b приводится к целому типу, и мы получим, что сумма двух чисел равна 15. Всё правильно. Давайте рассмотрим такой пример:


<?php
$a = 0;
$b = "";
if ($a == $b) echo "Переменные равны"; else
				echo "Переменные не равны";
?>

Если мы запустим данный скрипт, то увидим сообщение, что переменные равны. Но это же абсурд, как может число 0 быть равным пустой строке. Дело здесь в том, что для PHP число 0 — это false, пустая строка — это тоже false. Получается, что false = false, значит переменные равны.

Оператор «==» сравнивает только значения, но не сравнивает их типы.
Для сравнения переменных не только по значению, но и по типу, необходимо использовать оператор эквивалентности «===». Давайте перепишем пример:


<?php
$a = 0;
$b = "";
if ($a === $b) echo "Переменные равны"; else
				echo "Переменные не равны";
?>

В данном случае выйдет сообщение, что переменные не равны.
Что же здесь произошло? Оператор эквивалентности сравнил значения — они оказались равны. Затем сравнил типы: у переменной a тип integer, а у переменной b тип string. Типы различаются, поэтому оператор эквивалентности вернул false.

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

Домашнее задание: В качестве домашнего задания наберите следующий код и проверьте, что в итоге получится (проанализируйте полученный результат):


<?php
$a = 5; //тип integer
$b = "10b"; //тип string
$sum = $a + $b;
echo "Сумма двух чисел = $sum";
?>

В данной статье вы узнали, что такое

оператор эквивалентности в PHP и в каких случаях его использовать.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Опубликовано от Алексей Гулынин Оставить комментарий

Следующая статья >

Комментарии:

Полный список операторов — Взлом с помощью PHP

Поскольку эта книга претендует на то, чтобы стать полным руководством по PHP, было бы неправильно не перечислить весь набор операторов языка, так что вот:

3.12.3.1 Арифметические операторы

$а + $б

Добавление

Сумма $a и $b

$а — $б

вычитание

Разница между $a и $b

$а * $б

Умножение

$а умножить на $b

$а / $б

Разделение

$a разделить на $b

$а % $б

Модуль

Остаток от деления $a на $b

Если вы не использовали модуль со школы, вот вам краткое напоминание.

Чтобы вычислить $a % $b, вы сначала выполняете $a / $b, а затем возвращаете остаток. Например, если бы $a равнялось 10, а $b равнялось 3, то $b входило бы в $a целых 3 раза (что давало бы девять) с остатком 1. Следовательно, 10 % 3 равно 1.

3.12.3.2 Операторы присваивания

$а = $б

Равно

Устанавливает $a равным $b

$а =& $б

Ссылка

Установите $a для ссылки на $b

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

3.12.3.3 Побитовые операторы

$а и $б

И

Биты, установленные в $a и $b, установлены

$а | $b

Или

Биты, установленные в $a или $b, устанавливаются 9$b

Хор

Биты, установленные в $a или $b, но не в обоих, устанавливаются

~$а

Нет

Биты, установленные в $a, не устанавливаются, и наоборот

$а << $б

Сдвиг влево

Сдвиньте биты $a влево на $b шагов. Это эквивалентно умножению, но быстрее. Каждый шаг считается как «умножить на два».

$а >> $б

Сдвиг вправо

Сдвинуть биты $a вправо на $b шагов

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

Например, число восемь представляется в восьмибитном двоичном формате как 00001000. При сдвиге влево << все биты буквально сдвигаются на одну позицию влево, что дает 00010000, что равно шестнадцати. Восемь, сдвинутая влево на четыре, дает 10000000, что равно 128 — тому же числу, которое вы получили бы, умножив восемь на два четыре раза подряд. То есть 8 х 2 равно 16, 16 х 2 равно 32, 32 х 2 равно 64, а 64 х 2 равно 128.

Оператор & (побитовое И) сравнивает все биты первого операнда со всеми битами второго операнда, а затем возвращает результат со всеми установленными объединенными битами. Вот пример, учитывая 52 и 28, мы имеем восьмибитные двоичные числа 00110100 (52) и 00011100 (28). PHP создает результат 00000000, затем продолжает сравнивать каждую цифру в обоих числах — всякий раз, когда он находит 1 в обоих значениях, он помещает единицу в результат на том же месте. Вот как это выглядит:

001 1 0 1 00 (52)
000
1 1 1 00 (28)
000
1 0 1 00 (20)

Следовательно, 52 и 28 дают 20. Как вы понимаете, полезность побитовых операторов довольно ограничена, однако лучше знать их и не использовать, чем когда-нибудь наткнуться на них в чужом коде и не знать, что они делают. .

Возможно, наиболее распространенным побитовым оператором является |, который сравнивает биты в первом операнде с битами во втором операнде и возвращает результат со всеми битами, установленными в любом из них. Например:

00 11 0 1 00 (52) 90 209 11 0 1 000 1 (209) 1111 010 1 (245)

Причина | (Побитовый или) оператор настолько полезен, потому что он позволяет вам комбинировать множество параметров вместе. Например, функция flock() для блокировки файлов принимает константу в качестве второго параметра, который описывает, как вы хотите заблокировать файл. Если вы передаете LOCK_EX, вы блокируете файл исключительно, если вы передаете LOCK_SH, вы блокируете файл в общем режиме, а если вы передаете LOCK_NB, вы включаете «неблокирующий» режим, который не позволяет PHP ждать, если блокировка недоступна.

Однако, что вы хотите, чтобы эксклюзивная блокировка и PHP не ждали, если блокировка недоступна? Здесь на помощь приходит оператор побитового ИЛИ: вы можете передать LOCK_EX | LOCK_NB, и PHP объединяет их в один параметр, который выполняет обе функции.

3.12.3.4 Операторы сравнения

Все операторы сравнения возвращают либо истину, либо ложь, поэтому их можно использовать в условиях.

$а == $б

Равно

Истинно, если $a равно $b

$а === $б

Идентичный

Истинно, если $a равно $b и того же типа

$а != $б

Не равный

Истинно, если $a не равно $b

$а <> $б

Не равный

Истинно, если $a не равно $b

$а !== $б

Не идентичны

Истинно, если $a не равно $b или если они не одного типа

$а <$б

Меньше, чем

Истинно, если $a меньше, чем $b

$а > $б

Больше чем

Истинно, если $a больше, чем $b

$а <= $б

Меньше или равно

Истинно, если $a меньше или равно $b

$а >= $б

Больше или равно

Истинно, если $a больше или равно $b

В целом, PHP-программисты предпочитают != <>, несмотря на то, что делают то же самое. Это предубеждение связано с тем, что большая часть синтаксиса PHP основана на C, который использует исключительно !=.

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

 
 

Когда вы запустите этот сценарий, используя интерактивный режим CLI SAPI, вы обнаружите, что PHP выводит 1 для первых трех строк и ничего для последней. Как уже упоминалось, PHP выводит 1 для «истинно», что означает, что утверждения 12 равно 12, 12 идентично 12, а «12» равно 12 истинны. Однако для четвертой строки ничего не выводится, а это значит, что PHP считает выражение «12», идентичное 12, ложным, что и ожидалось — хотя «12» и 12 — одно и то же значение, они не одного типа; первое — это строка, а второе — число.

3.12.3.5 Операторы увеличения и уменьшения

++$а

Предварительное увеличение

Увеличивает $a на единицу, затем возвращает $a

$а++

Постинкремент

Возвращает $a, затем увеличивает $a на единицу

—$а

Предекремент

Уменьшает $a на единицу, затем возвращает $a

$а—

Постдекремент

Возвращает $a, затем уменьшает на единицу

Как видите, операторы увеличения и уменьшения могут быть размещены либо до, либо после переменной, и, как ни странно, эффект зависит от того, где находится оператор! Вот пример кода:

 
 

Это выведет следующее:

Фу 6
Бар 5

Причина этого в том, что ++, помещенный после переменной, является оператором постинкремента, который немедленно возвращает исходное значение переменной перед ее увеличением. Во второй строке нашего скрипта значение $foo (5) возвращается и сохраняется в $bar, 9.0211, затем $foo увеличивается на единицу. Если бы мы поставили ++ перед $foo, а не после него, $foo увеличилось бы на , а затем вернуло бы , что сделало бы и $foo, и $bar равным 6.

3.12.3.6 Логические операторы

$а и $б

И

Истинно, если и $a, и $b верны

$а && $б

И

Истинно, если и $a, и $b верны

$а или $б

Или

Истинно, если верно либо $a, либо $b

$а || $b

Или

Истинно, если верно либо $a, либо $b

$a xor $b

Хор

Истинно, если либо $a, либо $b истинны, но не оба

!$а

Нет

Истинно, если $a неверно

Как видите, есть два оператора для логического И и два для логического ИЛИ — это сделано для облегчения приоритета операторов в более сложных выражениях. Вообще говоря && и || используются, однако есть одно распространенное исключение, связанное с функцией die() — подробнее об этом позже.

Обратите внимание, что PHP использует короткое замыкание условных операторов, что является причудливым способом сказать: «Если вы пишете код, который говорит, что A или B должны быть истинными, а PHP находит, что A является истинным, он не будет беспокоиться об оценке B, потому что условие уже выполнено. «. Вы можете очень успешно использовать ИЛИ с вызовами функций, так что PHP попытается запустить первую функцию, и, если эта функция вернет false, PHP запустит вторую функцию.

 

Хотите изучить PHP 7?

Hacking with PHP полностью обновлен для PHP 7 и теперь доступен в виде загружаемого PDF-файла. Получите более 1200 страниц практического изучения PHP уже сегодня!

Если это было полезно, найдите время, чтобы рассказать другим о взломе с помощью PHP, написав об этом в Твиттере!

Tweet

Следующая глава: Тернарный оператор >>

Предыдущая глава: Операторы сравнения

Перейти к: Простые переменные и операторы   Типы данных   Проверка установки переменной   Автоматическое преобразование типов   Принудительное приведение типов к типу   Недесятичные системы счисления   Область действия переменных   Переменные переменные   Суперглобальные переменные   Предустановленные переменные   Ссылки    Константы      Предустановленные константы   Операторы      Сокращенные унарные операторы      Сравнение операторы      Полный список операторов      Тернарный оператор      Оператор разрешения области видимости      Оператор выполнения      Приоритет и ассоциативность операторов   Краткий обзор   Упражнения   Дополнительная литература   Следующая глава

 

Домашняя страница: Содержание

Copyright © 2015 Paul Hudson. Подписывайтесь на меня: @twostraws.

Операторы PHP с примерами — Учебные пособия Класс

Операторы используются для выполнения операций над переменными и значениями.

PHP делит операторы на следующие группы:

  • Арифметические операторы
  • Операторы присваивания
  • Операторы сравнения
  • Операторы увеличения/уменьшения
  • Логические операторы
  • Строковые операторы
  • Операторы массива

Арифметические операторы

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

  • Пример имени оператора Результат
  • + Сложение $x + $y Сумма $x и $y
  • - Вычитание $x - $y Разница $x и $y
  • * Умножение $x * $y Произведение $x и $y
  • / 9021 0 Деление $x / $y Частное от $x и $y
  • % Модуль $x % $y Остаток от $x , разделенный на $y
  • ** Возведение в степень $x ** $y Результат повышения $ x в степени $y'th (появилось в PHP 5. 6)
  

Выполнить: http://ideone.com/EwZM3b

Класс учебных пособий - Окно вывода

10
6
16
4
0
64


Операторы присваивания

Операторы присваивания PHP используются с числовыми значениями для записи значения в переменную.

Базовым оператором присваивания в PHP является "=" . Это означает, что левый операнд получает значение выражения присваивания справа.

  • Назначение То же, что и… Описание
  • x = y x = y Левому операнду присваивается значение выражения справа
  • x += y x = x + y Дополнение
  • х -= y x = x - y Вычитание
  • x *= y x = x * y Умножение
  • x /= y x = x / y Деление
  • x %= y x = x % y Модуль
  "
"; $res= $x += $y; эхо $res."
"; $res= $x -= $y; эхо $res."
"; $res= $x *= $y; эхо $res."
"; $ res = $ х / = $ у; эхо $res."
"; $res= $x %= $y; эхо $res."
"; ?>

Выполнить: http://ideone.com/U8sJHv

Класс учебных пособий - Окно вывода

20
40
20
400
20
0


Операторы сравнения

Операторы сравнения PHP используются для сравнения двух значений (числа или строки):

  • Имя оператора Пример Результат
  • == Равно $ x == $y Возвращает true, если $x равно $y
  • === Идентично $x === $y Возвращает true, если $x равно $y и они того же типа
  • != Не равно $x != $y Возвращает истину, если $x не равно $y
  • <> Не равно $x <> $y Возвращает истину, если $x 9 0210 это не равно $y
  • !== Не идентично $x !== $y Возвращает true, если $x не равно $y или они не то же самое type
  • > Больше $x > $y Возвращает true, если $x больше $y
  • < Меньше $x < $y Возвращает true, если $x меньше $y
  • 9065 2 >= Больше или равно $x >= $y Возвращает true, если $x больше или равно $y
  • <= Меньше или равно $x <= $y Возвращает true, если $x меньше или равно $y

Операторы увеличения/уменьшения

Операторы уменьшения значения PHP используются для уменьшения значения переменной.

  • Имя оператора Описание
  • ++$x До приращения Увеличивает $x на единицу, затем возвращает $x
  • $x++ Возврат после приращения $x, затем увеличивается на $ x на единицу
  • --$x Преддекремент Уменьшает $x на единицу, затем возвращает $x
  • $x-- Постдекремент Возвращает $x , затем уменьшает $x на единицу

Логические операторы

9000 2 Логические операторы PHP используются для объединения условных операторов.

  • Имя оператора Пример Результат
  • и И $x и $y Истинно, если оба $x и $y верны
  • или Или $x или $y Истинно, если либо $x или $y верно
  • xor Xor $x xor $y Истинно, если либо $x , либо $y верно, но не оба одновременно
  • & & И $x && $ y Истина, если оба $x и $y верны
  • || Или $x || $y Истинно, если верно либо $x , либо $y
  • ! Не !$x Верно, если $x неверно

Строковые операторы

PHP имеет два оператора, специально разработанных для строк.

  • Имя оператора Пример Результат
  • . Конкатенация $txt1 . $txt2 Соединение $txt1 и от 0210 до $txt1

Операторы массива

PHP операторы массива используются для сравнения массивов.

  • Пример имени оператора Результат
  • + Union $x + $y Union of $x и $y
  • == Равенство $x == $y Возвращает true, если $x и $y имеют одинаковые пары ключ/значение
  • === Identity $x === $y Возвращает true, если $x и $y имеют одинаковые пары ключ/значение в одном и том же порядка и тех же типов
  • != Неравенство $x != $y Возвращает true, если $x не равно $y
  • <> Неравенство $x <> $y Возвращает true, если $x не равно до $y
  • !== Неидентичность $x !== $y Возвращает true, если $x не идентично $y

9 1091
Операторы PHP — назначение и упражнения
Напишите программу для сложения двух чисел «10» и «5»
Напишите программу для вычитания числа «3» из «12»
Напишите программу для вычитания числа «10» из «5»
Напишите программу для умножения двух чисел «7» и « 11'
Напишите программу для деления 10 на 4 (10/4) и проверки результата.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *