Главная страница » Что означает в php

Что означает в php

  • автор:

Синтаксис PHP для начинающих. Команды PHP

Язык программирования PHP предназначен для web-программирования. Он сочетает в себе преимущества языков C и Perl, плюс относительно прост в изучении. В этой статье мы рассмотрим его синтаксис и некоторые общие понятия и команды.

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

При этом в PHP есть почти все функции и операторы, которые есть в стандартном GNU С (либо их аналоги). Здесь можно вспомнить циклы (while, for), функции ввода и вывода, операторы выбора (if, switch) и многие другие.

Цель нашей статьи — кратко ознакомить вас с основами синтаксиса PHP.

PHP и HTML

Легче всего «прочувствовать» синтаксис любого языка программирования на примерах. Смотрим простейший PHP-скрипт:

Здесь следует обратить внимание, что код HTML корректно обрабатывается интерпретатором PHP, однако начало может озадачить. Допустим, откуда здесь HTML-тэги <body> и <html>? И как раз здесь и заключается основная особенность PHP-языка: скрипт может совсем не отличаться от стандартного HTML-документа.

Продолжаем. Как видно из синтаксиса, код команды (сценария) начинается уже после <? (открывающий тег) и заканчивается ?>. Между этими двумя тегами код интерпретируется как программа, то есть этот участок не попадает в HTML-документ. А когда следует что-либо вывести, используется оператор echo.

Таким образом, в PHP любой текст, расположенный вне программных блоков (они ограничены <? и ?>) выведется непосредственно в браузер. Это и есть основная фишка PHP, если сравнивать этот язык с Perl и C, в которых вывод выполняется посредством стандартных операторов.

Разделение инструкций в PHP

Разделение инструкций осуществляется следующим образом: каждое выражение заканчивается ; — точкой с запятой.

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

Комментарии в скриптах PHP

Когда мы пишем код на PHP, мы редко обходимся без комментариев. Вот, как это бывает:

Рассмотрим ещё один пример:

Пожалуйста, будьте внимательны!

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

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

Типы данных в PHP

Также PHP поддерживает 8 простых типов данных. Среди них: 1. Четыре скалярных типа: — boolean (двоичные данные); — float (числа с плавающей точкой либо ‘double’); — integer (целые числа); — string (строки). 2. Два смешанных типа: — object (объекты); — array (массивы). 3. Два специальных типа: — NULL («пустые»); — resource (ресурсы).

Нельзя не упомянуть и про псевдотипы в PHP: — number (числа); — mixed (смешанные); — callback (обратного вызова).

Синтаксис PHP: выражения

Главные формы выражений — константы и переменные. Допустим, когда вы записываете «$a = 100», вы выполняете присвоение ‘100’ переменной $a:

В нашем примере $a является переменной, = является оператором присваивания, 100 — и есть выражение. Значение его — 100.

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

Итак, в 1-й строке очередного примера выражение — это константа 7, во второй — переменная $x, ведь ранее ей присваивалось значение 7. Также является выражением $y = $x .

Синтаксис PHP: операторы

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

Итак операторы присваивания в PHP:

Комбинированные операторы в PHP:

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

В PHP есть и другие операторы, но их лучше рассматривать в контексте управляющих конструкций

Управляющие конструкции в PHP

Основные конструкции: 1. Циклы (while, for, foreach, do-while, break, continue); 2. Условные операторы (if, else); 3. Операторы выбора (switch), возврата значений (return), объявления (declare) и включений (require, include).

Примеры конструкций в PHP:

Этот пример показывает, как используется конструкция if вместе с оператором сравнения ($a > $b).

Идём дальше: если переменная $a нулю не равна, выведется строка «значение a истинно (true)», таким образом, мы видим как условный оператор (конструкция) if взаимодействует с логическим:

Также приведем пример цикла while:

PHP и объектно-ориентированное программирование

PHP имеет неплохую поддержку ООП. Например, в PHP мы можем создать классы разных уровней и объекты, а также довольно гибко ими оперировать.

Приведём пример использования PHP-класса:

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

Ключевые PHP-операторы

Операторы — это символы, которые вы можете использовать для манипулирования переменными. Операторы в PHP работают почти по такому же принципу, что и в математике.

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

Первый оператор, с которым вы должны познакомиться, — это оператор присваивания (“=”).

Обратите внимание: это не то же самое, что оператор равенства.

$x = 55 означает “x присваивается значение 55”, а не “x равно 55”.

Оператор равенства выражается через двойной знак равенства (“==”).

Если вы хотите получить истинное или ложное значение x=55, вам нужно написать следующее: $x == 55;

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

Оператор Join

Еще одним часто используемым оператором является оператор присоединения (Join) или конкатенации.

В основном он используется для соединения двух и более строк вместе.

Пример:

Результат:

Оператор Join обычно используется для присоединения одной строки к другой.

Сокращение оператора Join

Существует специальный синтаксис для написания функции Join. Вместо того чтобы повторять одну из переменных с обеих сторон, вы можете просто написать $a .= $b, что означает “присоединить $b к $a”.

$a .= $b значит $a = $a.$b;

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

Арифметические операторы в языке PHP работают практически так же, как и в математике.

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

Поскольку это арифметические операторы, обе переменные должны быть числами.

Пример:

Результат:

Они работают по тому же принципу, что и в математике.

Пример:

Результат:

Вы также можете использовать “ — ” для присвоения отрицательного числа.

Таким образом, операторы языка PHP и в самом деле не слишком отличаются от математических.

Единственный оператор, который, возможно, покажется вам странным, — это оператор модулей %. Он означает “остаток от”: так, $a%$b означает “то, что остается после деления $a на $b”.

Интересное (но несущественное) примечание: технически вы можете использовать арифметические операторы со строками. Но поскольку PHP преобразует строку в число, с практической точки зрения это совершенно бессмысленно.

Объединение присваиваний

При желании вы можете объединить два оператора присваивания вместе.

Пример:

Наша цель в этом случае — сохранить строку.

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

Например, если мы хотим увеличить значение $a на 7, мы можем написать $a = $a+7 ; но можно также использовать комбинированное присваивание $a += 7 . Это то же самое, что $a = $a+7 .

Еще одно действие, которое можно сделать с переменными, — это увеличить или уменьшить их вручную. Это можно сделать, добавив a++ или $a —перед или после переменной.

С помощью знаков “+” можно увеличить значение переменной на 1.

Это эквивалентно $a = $a + 1 ;

Есть ли разница, где ставить знаки ++ или — ? Да, есть.

Если вы ставите плюсы перед переменной, то это добавляет 1 к переменной до того, как ваш код начнет с ней работать.

Если вы ставите плюсы после переменной, то вы увеличиваете значение переменной только после работы с ней.

Echo $a++ сначала покажет 17, а затем увеличит значение $a с 17 до 18.

Echo ++$a сначала увеличит значение $a до 18, а затем выведет его на экран.

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

Оператор ссылок

Используя этот оператор, мы как бы говорим: “Я отдаю вам свою переменную, и теперь все, чему вы будете равны, буду равен и я”.

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

Оператор равенства

Как уже говорилось выше при рассмотрении оператора присваивания, “==” — это способ проверки, равно ли что-то чему-то другому.

Пример:

Результат:

Тут легко допустить ошибку и случайно поставить “=”.

Проверка типа переменной

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

Странные операторы в PHP

Если вы прочитаете документацию по PHP, вы узнаете о массе операторов. Если вы не знаете ещё PHP-операторы, сперва изучите их, а потом вернитесь к прочтению этой статьи.

Операторы обычно состоят из странных символов, таких как !, -, =>, <=>, ^ or

. Действительно, некоторые из них просто читаются, например AND , в то время как некоторые из них — упущенная попытка сделать их читаемыми и скрыть их фактически двойную индивидуальность, например, xor.

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

Итак, вот 10 операторов PHP, которые вы должны знать в 2018 году!

Оператор b’

Просто добавьте b перед любой строкой, и ничего не произойдёт. Этот ловкий трюк работает только с b и B . Здесь мы должны напомнить о судьбе PHP 6, поскольку b похож на 6 .

Оператор []=

Короткий оператор добавления нового элемента в массив. Он работает так, как вы и ожидаете — добавляет элемент справа в массив слева.

В самом деле, это намного элегантнее, чем $array[] = ‘element’; . Некоторые тесты показывают, что это намного быстрее, в то время как другие наоборот, что это намного медленнее. Как обычно, посмотрите сами, подходит ли данный оператор вам, прежде чем делать ставку на производительность подобным трюком.

К сожалению, в официальном руководстве нет ни слова об этой замечательной возможности.

Оператор <-

Оператор «левого объекта» был введен в PHP для расширения возможности написания кода, для того чтобы разработчики могли писать PHP-код справа налево. Хотя позже проект был прекращён по непонятным причинам, этот первый оператор, получивший поддержку, сохранился в PHP.

В целях обратной совместимости вышеприведённый код не получит значение свойства B в объекте $a , а просто сравнивает $a с противоположностью B .

Оператор ––>

—> также известен как «оператор супер-объекта», создан на основе своего дальнего двоюродного брата, -> .

—> работает как -> , за исключением того, что это не так. Основная хитрость: использовать не объект в качестве переменной $object , а целое число (в таком случае будет это будет работать как сравнение > — прим. пер.)

Оператор «стрелки влево» для массивов [$a <= $b]

Все мы знаем оператор => для массивов, но они также поддерживают зеркальную версию этого оператора следующим образом:

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

Имена констант с *, %

Константы хороши и эффективны, пока вам вам не захочется больше свободы в их синтаксисе. Хотя в руководстве указано, что имя константы должно содержать только буквы, символы подчёркивания и цифры, но также разрешено использовать специальные символы типа * или % в имени. Например, следующим образом:

Единственное, нужно убедиться, что константы A и B существуют, а в результате их умножения получается значение предполагаемой константы. Это ещё одна хорошая причина, чтобы избегать использование простых чисел в качестве значений в константах.

Операторы «кораблей»

Итак, все знают об операторе «космический корабль» <=> с момента выхода PHP 7. Но менее известно, что одновременно с этим релизом был введён целый флот космических кораблей для проведения крупномасштабных операций.

Крошечный космический корабль

Вы можете предоставить эскорт оператору космического корабля, используя крошечный оператор космического корабля. Этот оператор не делает сравнение: он просто добавляет $b к $a в таком изысканном стиле.

X-истребители

Если вы хотите добавить огневую мощь к предыдущему флоту, вы можете вызвать истребителей типа X к источнику PHP: +-0-+ . Следующий код вычитает 3 у $a (в оригинальной статье написано, что оператор прибавит 3 ( adds 3 to $a ), но это не так, см. вывод примера ниже — прим. пер.)

Линейный корабль

Оператор линейного корабля обеспечивает поддержку предыдущих операторов. Это один из операторов, работающий только с массивами, точно так же, как => . Его следует использовать только самым продвинутым гуру PHP на этой стороне галактики. Не стоит недооценивать его силу.

Разве не лучший способ написать так?

Звезда Смерти

Многие из вас бы спросили, а был ли встроен в PHP оператор «звезда смерти», и ответ таков: в данный момент неизвестно. Есть планы на это, но никто никогда не видел реального экземпляра. Мне бы очень хотелось видеть оператор в три строки, так как PHP будет первым, кто будем иметь подобное (и, когда это произойдёт, надеюсь, не с моего счёта спишут стоимость этого оператора).

Безумие оператора PHP

Операторы PHP — аккуратные и эффективные. Мы надеемся, что эти менее известные операторы научили вас кое-чему в PHP.

Проверьте приведённые примеры кода: все они работают в PHP 7.2.5, кроме «звезды смерти». Они могут иметь некоторые предварительные условия, поэтому обязательно прочитайте документацию перед их использованием.

PHP
операторы

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

Операторы могут быть сгруппированы в соответствии с количеством принятых значений.

замечания

Операторы работают или действуют на один (унарные операторы, такие как !$a и ++$a ), два (двоичные операторы, такие как $a + $b или $a >> $b ) или три (единственный тернарный оператор $a ? $b : $c ).

Приоритет операторов влияет на группирование операторов (как если бы они были в скобках). Ниже приведен список операторов в порядке присутствия (операторы во втором столбце). Если несколько операторов находятся в одной строке, группировка определяется порядком кода, где первый столбец указывает ассоциативность (см. Примеры).

Обратите внимание, что функции и языковые конструкции (например, print ) всегда оцениваются сначала, но любое возвращаемое значение будет использоваться в соответствии с вышеуказанными правилами приоритета / ассоциативности. Особая осторожность необходима, если круглые скобки после языковой конструкции опущены. Например, echo 2 . print 3 + 4; echo 721 : часть print оценивает 3 + 4 , печатает результат 7 и возвращает 1 . После этого, 2 эхо, конкатенируется с возвращаемым значением print ( 1 ).

Операторы строк (. И. =)

Есть только два строковых оператора:

Конкатенация двух строк (точка):

Конкатенация назначения (точка =):

Основное назначение (=)

приводит к $a имеющему значение some string .

Результатом выражения присваивания является назначаемое значение. Обратите внимание, что один знак равенства = НЕ для сравнения!

  1. Строка 1 назначает от 3 до $a .
  2. Строка 2 присваивает от 5 до $a . Это выражение также дает значение 5 .
  3. Строка 2 затем присваивает результат выражения в круглых скобках ( 5 ) равным $b .

Таким образом: как $a и $b теперь имеют значение 5 .

Комбинированное присвоение (+ = и т. Д.)

Комбинированные операторы присваивания являются ярлыком для операции над некоторой переменной и последующим присвоением этой новой переменной этой переменной.

Комбинированная конкатенация и назначение строки:

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

Изменение приоритета оператора (с круглыми скобками)

Порядок, в котором операторы оцениваются, определяется приоритетом оператора (см. Также раздел «Примечания»).

$a получает значение 10, потому что сначала оценивается 2 * 3 (умножение имеет более высокий приоритет, чем добавление), что дает результат 6 + 4 , который равен 10.

Приоритет может быть изменен с помощью круглых скобок: в

$a получает значение 14, потому что сначала оценивается (3 + 4) .

ассоциация

Левая ассоциация

Если предел двух операторов равен, ассоциативность определяет группировку (см. Также раздел «Примечания»):

* и % имеют одинаковый приоритет и левую ассоциативность. Поскольку умножение происходит сначала (слева), оно сгруппировано.

Теперь оператор модуля встречается первым (слева) и поэтому группируется.

Правильная ассоциация

Оба значения $a и $b теперь имеют значение 2 потому что $b += 1 сгруппировано, а затем результат ( $b равен 2 ) присваивается $a .

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

равенство

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

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

Например, пример ниже будет отображать «a и b равны», но не «a и b идентичны».

При использовании оператора равенства числовые строки передаются в целые числа.

Сравнение объектов

=== сравнивает два объекта, проверяя, являются ли они точно таким же экземпляром . Это означает, что new stdClass() === new stdClass() разрешает false, даже если они создаются одинаково (и имеют точно такие же значения).

== сравнивает два объекта, рекурсивно проверяя, равны ли они ( глубокие равны ). Это означает, что для $a == $b , если $a и $b :

  1. того же класса
  2. имеют одинаковые свойства, включая динамические свойства
  3. для каждого свойства $property set, $property $a->property == $b->property истинно (следовательно, рекурсивно проверяется).

Другие широко используемые операторы

  1. Больше ( > )
  2. Lesser Than ( < )
  3. Больше или равно ( >= )
  4. Меньше или равно ( <= )
  5. Не равно ( != )
  6. Не одинаково равно ( !== )
  1. Greater Than : $a > $b , возвращает true если значение $a больше, чем $b , в противном случае возвращает false.

Пример :

  1. Lesser Than : $a < $b , возвращает true если значение $a меньше значения $b , в противном случае возвращает false.

Пример :

  1. Больше или равно: $a >= $b , возвращает true если значение $a больше или равно $b или равно $b , в противном случае возвращает false .

Пример :

  1. Меньше, чем равное : $a <= $b , возвращает значение true если значение $a меньше или равно $b или равно $b , в противном случае возвращает значение false .

Пример :

5/6. Не равный / идентичный: Чтобы перефразировать предыдущий пример равенства, в приведенном ниже примере будет отображаться «a и b не идентичны», но не «a и b не равны».

Оператор космического корабля (<=>)

PHP 7 представляет новый тип оператора, который может использоваться для сравнения выражений. Этот оператор будет возвращать -1, 0 или 1, если первое выражение меньше, равно или больше второго выражения.

Объекты не сопоставимы, и поэтому это приведет к неопределенному поведению.

Этот оператор особенно полезен при написании пользовательской функции сравнения с использованием usort , uasort или uksort . Например, для массива объектов, которые будут отсортированы по их weight свойству, анонимная функция может использовать <=> для возврата значения, ожидаемого функциями сортировки.

В PHP 5 это потребовало бы более сложного выражения.

Оператор Null Coalescing (??)

Null coalescing — новый оператор, введенный в PHP 7. Этот оператор возвращает свой первый операнд, если он установлен, а не NULL . В противном случае он вернет свой второй операнд.

Этот оператор также может быть цепным (с право-ассоциативной семантикой):

Замечания:
При использовании коалесцирующего оператора при конкатенации строк не забудьте использовать круглые скобки ()

Это будет выводить только John , и если его $ firstName равно null, а $ lastName — Doe он выведет Unknown Doe . Чтобы вывести John Doe , мы должны использовать круглые скобки, подобные этому.

Это выведет John Doe вместо John .

instanceof (оператор типа)

Для проверки того, является ли какой-либо объект определенным классом, оператор (двоичный) instanceof может использоваться с PHP версии 5.

Первым (левым) параметром является объект для тестирования. Если эта переменная не является объектом, instanceof всегда возвращает false . Если используется константное выражение, возникает ошибка.

Второй (правый) параметр — это класс для сравнения. Класс может быть предоставлен как само имя класса, строковая переменная, содержащая имя класса (а не строковая константа!) Или объект этого класса.

instanceof также может использоваться для проверки того, является ли объект некоторого класса, который расширяет другой класс или реализует некоторый интерфейс:

( Для того, чтобы проверить , является ли объект не какого — то класса, не оператор ! ) Может быть использован:

Обратите внимание, что круглые скобки вокруг $o instanceof MyClass не нужны, потому что instanceof имеет более высокий приоритет, чем ! , хотя это может сделать код более удобным для чтения с круглыми скобками.

Предостережения

Если класс не существует, вызываемые функции автозагрузки вызываются, чтобы попытаться определить класс (это тема, выходящая за рамки этой части Документации!). В версиях PHP до 5.1.0 оператор instanceof также запускает эти вызовы, тем самым фактически определяя класс (и если класс не может быть определен, произойдет фатальная ошибка). Чтобы этого избежать, используйте строку:

Начиная с версии PHP 5.1.0, зарегистрированные автозагрузчики больше не вызывают в этих ситуациях.

Старые версии PHP (до 5.0)

В более ранних версиях PHP (до 5.0) функция is_a может использоваться для определения того, какой объект принадлежит некоторому классу. Эта функция устарела в PHP версии 5 и не указана в PHP версии 5.3.0.

Тернарный оператор (? 🙂

Тернарный оператор можно рассматривать как оператор inline if . Он состоит из трех частей. operator и два результата. Синтаксис выглядит следующим образом:

Если operator оценивается как true , значение в первом блоке будет возвращено ( <true value> ), иначе будет возвращено значение во втором блоке ( <false value> ). Поскольку мы устанавливаем значение $value для результата нашего тернарного оператора, он сохраняет возвращаемое значение.

$action будет содержать строку 'default' если empty($_POST['action']) значение true. В противном случае оно будет содержать значение $_POST['action'] .

Выражение (expr1) ? (expr2) : (expr3) оценивает expr2 если expr1 оценивается как true , а expr3 если expr1 оценивается как false .

Можно исключить среднюю часть тернарного оператора. Expression expr1 ?: expr3 возвращает expr1 если expr1 значение TRUE и expr3 противном случае. ?: часто называют оператором Элвиса .

Это ведет себя как оператор Null Coalescing ?? , за исключением того, что ?? требует, чтобы левый операнд был точно null а ?: пытается разрешить левый операнд в логическое и проверить, разрешает ли он логическое значение false .

В этом примере setWidth принимает параметр ширины или значение по умолчанию 0 для изменения значения сеанса ширины. Если $width равно 0 (если $width не указана), который будет разрешен для boolean false, вместо этого используется значение getDefaultWidth() . Функция getDefaultWidth() не будет вызываться, если $width не разрешалось для boolean false.

Дополнительные сведения о преобразовании переменных в boolean см. В разделе Типы .

Приращение (++) и Decrementing Operators (-)

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

Более подробную информацию об операторах увеличения и уменьшения можно найти в официальной документации .

Оператор выполнения («)

Оператор выполнения PHP состоит из backticks («) и используется для запуска команд оболочки. Результат команды будет возвращен и может поэтому храниться в переменной.

Обратите внимание, что оператор execute и shell_exec() даст тот же результат.

Логические операторы (&& / AND и || / OR)

В PHP существует две версии логических операторов AND и OR.

оператор Правда, если
$a and $b И $a и $b истинны
$a && $b И $a и $b истинны
$a or $b Либо $a либо $b истинно
$a || $b Либо $a либо $b истинно

Заметим, что && и || операторы имеют более высокий приоритет, чем and и / or . См. Таблицу ниже:

оценка Результат $e Оценивается как
$e = false || true Правда $e = (false || true)
$e = false or true Ложь ($e = false) or true

Из-за этого безопаснее использовать && и || вместо and и / or .

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

Префикс побитовых операторов

Побитовые операторы похожи на логические операторы, но выполняются за бит, а не по логическому значению.

Операторы битмасс-битмаски

Побитовое И & : бит устанавливается только в том случае, если он установлен в обоих операндах

Побитовое ИЛИ | : бит устанавливается, если он установлен в любом или обоих операндах

Побитовое XOR ^ : бит устанавливается, если он установлен в один операнд и не установлен в другом операнде, т. Е. Только если этот бит находится в другом состоянии в двух операндах

Пример использования битмасков

Эти операторы могут использоваться для управления битмашками. Например:

Здесь | оператор используется для объединения двух битмасков. Хотя + имеет тот же эффект, | подчеркивает, что вы комбинируете битмаски, а не добавляете два нормальных целых числа.

Этот пример (при условии, что $option всегда содержит только один бит) использует:

  • Оператор ^ удобно переключать битмаски.
  • | оператора, чтобы установить бит, пренебрегая его исходным состоянием или другими битами
  • оператор

  • Так как &= с битом набора ничего не сделает ( (1 & 1) === 1 , (0 & 1) === 0 ), то выполнение &= с целым числом с единственным не установленным битом будет только отменять этот бит , не влияя на другие биты.
  • &= с несоответствующим битом будет отменять этот бит ( (1 & 0) === 0 , (0 & 0) === 0 )
  • Если на выходе установлены какие-либо биты, это означает, что включена одна из опций.
  • Если на выходе есть все бит битовой маски, это означает, что все параметры в битовой маске включены.

Имейте в виду , что эти операторы сравнения: ( < > <= >= == === != !== <> <=> ) имеют более высокий приоритет , чем эти операторы битовая-битовых масок: ( | ^ & ). Поскольку побитовые результаты часто сравниваются с использованием этих операторов сравнения, это общая ошибка, о которой нужно знать.

Операторы битового сдвига

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

<< $x эквивалентно отключению наивысших битов $x и умножению на $x th мощности 2

Побитовое смещение вправо >> : сбросить самый низкий сдвиг и сдвинуть оставшиеся биты вправо (менее значимые)

>> $x эквивалентно делению на $x th степени 2 и отбрасывать нецелую часть

Пример использования смещения битов:

Быстрое деление на 16 (более высокая производительность, чем /= 16 )

В 32-битных системах это отбрасывает все биты в целое число, устанавливая значение 0. В 64-битных системах это приводит к сбою наиболее значимых 32 бит и сохраняет минимум

Значимые 32 бита, эквивалентные $x & 0xFFFFFFFF

Примечание. В этом примере используется printf("%'06b") . Он выводит значение в 6 двоичных разрядов.

Операторы объектов и классов

Доступ к объектам или классам осуществляется с помощью оператора объекта ( -> ) и оператора класса ( :: .

Обратите внимание, что после оператора объекта значение $ не должно быть записано ( $object->a вместо $object->$a ). Для оператора класса это не так, и необходимо $ . Для константы, определенной в классе, значение $ никогда не используется.

Также обратите внимание, что var_dump(MyClass::d()); разрешено только в том случае, если функция d() не ссылается на объект:

Это приводит к ошибке «Неустранимая ошибка PHP: использование $ this, если не в контексте объекта»

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

Эти операторы имеют наивысший приоритет (они даже не упоминаются в руководстве), даже выше этого clone . Таким образом:

Значение $o1 добавляется до того, как объект клонируется!

Обратите внимание, что использование скобок для влияния приоритета не работает в PHP версии 5 и старше (это делается в PHP 7):

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

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