php разница между and и

Заметки Лёвика

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

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

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

приоритет логических операций в PHP

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

Использование or для условного выполнения.

Часто в коде можно встретить примеры использования or без всяких if.

mysql_connect(. ) or die(‘DB error’);

Метки: php

Опубликовано Четверг, Апрель 18, 2013 в 08:08 в следующих категориях: Без рубрики. Вы можете подписаться на комментарии к этому сообщению через RSS 2.0. Вы можете оставить комментарий. Пинг отключен.

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Источник

PHP — зачем операторы or и and?

Зачем в пыхе есть операторы or, xor и and если есть &&, ||, &, |?
И в чем собсно отличие && от &, || от |?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Вероятно сделали по аналогии с С:

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

то есть, всего лишь для облегчения/быстроты набора?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

И зачем он? Какое-то говнище с проектированием если программисту вдруг понадобился приоритет оператора.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Чтобы можно было делать вот так:

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Выше тебе написали пример.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Мне не нужно цитировать описание, я его прочитал. Я не понимаю разницы, вот в упор между нулем и false.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

То есть, я не вижу задачи, где просто невозможно применить || вместо |.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Я не понимаю разницы, вот в упор между нулем и false.

Разница в их выполнении интерпретатором. Например, в случае логических операторов в выражении УСЛОВИЕ1 || УСЛОВИЕ2 второе условие выполнено (проверено) не будет если первое верно.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Разве не сработает бла-бла-бла || die(. )?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

запись бла-бла-бла or die() позволяет не думать ВООБЩЕ о приоритете, у тебя or гарантировано отработает последним.

Фактически ты пишешь код, а потом на автомате вставляешь через or die() обработчики ошибок и пр.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

То есть, я не вижу задачи, где просто невозможно применить || вместо |.

Примени || вместо | с какими-либо битовыми флагами, ага.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

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

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

PHP — зачем?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Чтобы код был красивее и понятнее.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Чё, лабы по C++ «сдал» с помощью LOR’а, и тебя на пыхе заставили кодить? Отлична, это теперь твоё будущее, смирись с ним.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Я не понимаю разницы, вот в упор между нулем и false.

А разницу между true и 42 понимаешь?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Про битовые маски почитай, например.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

То есть, я не вижу задачи, где просто невозможно применить || вместо |.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

То есть, я не вижу задачи, где просто невозможно применить || вместо |.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Как часто битовые операции бывают нужны с PHP?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

«Удалите эту фичу, мне она не нужна»?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Как часто битовые операции бывают нужны с PHP?

Как минимум для работы с предопределёнными стандартными константами вроде E_STRICT, LOCK_NB или SORT_FLAG_CASE.

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

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

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

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

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

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

А может он просто задал вопрос без всякой задней мысли

Таки зачем тебе частота использования битовых операций? Курсовую по пыху пишешь что ли?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Таки зачем тебе частота использования битовых операций?

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

&& || применяются к числам когда or and только к bool

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Как часто битовые операции бывают нужны с PHP?

очень часто,особенно на этапе оптимизации работы с бд

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

&& || применяются к числам когда or and только к bool

Источник

Эволюция PHP — от 5.6 до 8.0 (Часть 1)

Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP».

php разница между and и. Смотреть фото php разница между and и. Смотреть картинку php разница между and и. Картинка про php разница между and и. Фото php разница между and и

Шпаргалка по изменениям в PHP v7.x

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

PHP 7.0

Анонимный класс может использоваться вместо именованного класса:

Когда класс не нужно документировать

Когда класс во время выполнения используется только один раз

Функция целочисленного деления — безопасный способ деления (даже на 0).

Возвращает целочисленный результат деления первого операнда на второй. Если делитель (второй операнд) равен нулю, функция пробрасывает EWARNING и возвращает FALSE.

Используется для оптимизации и упрощения операций сравнения.

В теле функций генераторов разрешен следующий новый синтаксис:

Повышение производительности

PHP 7 почти вдвое быстрее, чем PHP 5.6.

Значительное сокращение использования памяти

Как видно из диаграмм, PHP 7.0 стал громадным шагом вперед с точки зрения производительности и использования памяти. Для страницы с запросами к базе данных версия 7.0.0 более чем в 3 раза быстрее, чем 5.6 с включенным opcache в 2.7 раза быстрее без opcache! С точки зрения использования памяти разница тоже существенная!

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

⚠ Внимание! Вы можете реализовать Throwable только через Error и Exception .

С этим нововведением глобально зарезервированные слова стали полу-зарезервированными:

PHP 7.1

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

Функция с типом возврата void или void функция может либо возвращать неявно, либо иметь оператор возврата без значения:

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

Синтаксис квадратных скобок для list()

Источник

20 неожиданностей в PHP, о которых знают не все

Ниже поговорим про неожиданные, нестандартные, необычные, не очевидные, странные или особенные ситуации/случаи в PHP.

explode() в 2 раза быстрее unserialize()

Если для сохраняемых чисел не важен тип (число), лучше хранить числа через запятую, чем их же сериализовать.

Точное сравнение: 0 == ‘строка’

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

Так например можно пропустить переменную запроса:

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

in_array() нас обманывает

Вы мастер массивов в PHP. Вы уже знаете все о создании, редактировании и удалении массивов. Тем не менее, следующий пример может вас удивить.

AND и &&

Полезная ссылка по этой теме: Приоритет оператора

Шунтирующие операторы (короткая запись)

count() не всегда дает ожидаемый результат

isset() и null

Странное поведение в PHP при передаче значения foreach по ссылке

empty() и объекты

Однако если разобраться, то нет тут ничего удивительного и все логично!

А теперь, зададим значение свойства bar в __isset() и empty() его получит:

Увеличитель числа ++

Имеет большое значение в каком положении использовать ++ (инкремент, увеличитель).

Увеличение строки ++

С числами все довольно просто, но что будет если инкрементить строки?

Этот момент хорошо описан в официальной документации по операциям инкремента/декремента, однако многие не читали этот материал, потому что не ожидали встретить там ничего особенного.

Неточности с плавающей точкой

Посчитайте эту арифметику и скажите результат:

Сколько получилось, 8? А у компьютера 7!

Что получается в итоге и где ошибка?

Однако, если посчитать так, то увидим 0.8, а не 0.79999999999. Хотя этот результат является лишь округлением:

А вот пример сериализации дробного значения:

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

Все объекты в PHP передаются по ссылке

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

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

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

Так, например, если использовать массив, то все будет работать как мы ожидаем. Тот же код но с массивом:

Поэтому чтобы первый вариант работал правильно, в переменную нужно передавать копию объекта, создаваемую с помощью clone :

Сложение массивов

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

Изменение типа данных в ключах массива

При создании индекса массива PHP автоматически преобразовывает тип данных. Это надо учитывать, при работе с ассоциативными массивами. Так например, если в индекс передать число в виде строки (‘555’), то в индексе оно станет числом, или если в индекс передать true, то оно станет числом 1, а вот null превратиться в пустую строку. Пример кода см. ниже.

Дополнительно с ключом key будут сделаны следующие преобразования:

Closure::call — вызов анонимной функции с указанием контекста

Это не столько неожиданность, сколько интересная особенность, о которой мало кто знает.

PHP замыкания (анонимные функции) можно вызывать передавая в них контекст (объект). В результате замыкание можно использовать как метод переданного объекта.

Для этого в объекте замыкания есть метод:

Пример того как это использовать

Что мы видим? При вызове одного и того же замыкания мы получаем разный результат, который зависит от контекста вызова (от того какой объект передается и используется в замыкании).

Рекурсивная анонимная (лямбда) функция

Пример ниже показывает как можно создать рекурсивное замыкание. Другими словами как можно создать анонимную функцию и использовать её рекурсивно саму в себе.

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

Передача по ссылке переменных это дело понятное, а вот ссылки для вызова функции/метода — не совсем. Нужна такая штука для передачи по ссылке переменных с которыми работает функция/метод. Рассмотрим на примере:

Аналогичный пример с объектом:

Рассмотрим еще один пример, где наглядно видно отличие вызова по ссылке и без:

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

Передача функций по ссылке никак не связана с производительностью (ею занимается PHP). Подробно читаем в документации.

isset() в 2 раза быстрее in_array()

Скорости очень быстрые, но если обрабатываются большие массивы, то есть смысл заюзать array_flip() и искать значение через isset() :

Источник

Отличие Javascript от PHP

Почему-то мои статьи в основном воспринимаются, как статьи для новичков, но, если что, я стараюсь писать для всех, и, более того, ориентируюсь больше на знающих людей, чем на новичков :). Поэтому не поддавайтесь заголовку: возможно, вы сможете найти для себя что-нибудь полезное.

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

Автор, о чём топик-то? Кому вообще нужен твой PHP?

Причина, по которой я решил написать этот топик, проста: я бы хотел чуть-чуть просветить людей, которые не пишут на PHP (или очень мало писали на PHP) о некоторых интересных моментах в этом языке, о которых довольно-таки мало говорят. Я ни в коем случае не хочу никого убеждать, что PHP лучше, чем те же Python, Ruby, Javascript, [подставьте сюда свой любимый язык для веба]: более того, я так и не считаю. Мне просто «за державу обидно», когда на PHP наезжают, просто утверждая, без аргументов, что это плохой язык.

Интересные отличия PHP от Javascript

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

Всё, кроме объектов — значения

В PHP есть множество встроенных типов, и ни один из них не ведет себя, как объект. У встроенных типов нет свойств, методов и т.д. В этом плане PHP напоминает обычный C. Это играет роль, когда мы перейдем к следующему утверждению:

По умолчанию, всё передается по значению, и объекты тоже

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

Давайте рассмотрим простой пример:

Пример очень простой, но, ИМХО, довольно показательный. Давайте рассмотрим другой, как мне кажется, более прикольный, пример.

Чувствуете :)? Замыкание по значению или по ссылке!

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

Конкатенация строк

Также, в PHP есть отдельный оператор конкатенации: точка [.]. Простой пример:

В Javascript [ 3 + ‘3’ ] это будет 33. Пичалька. Впрочем, в некоторых других динамических языках вам просто не дадут сложить строку и число без явного преобразования типов. Хорошо.

Copy-on-write

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

В PHP у хеш-массива можно легко узнать длину

Ну это, я считаю, позор для разработчиков JS: они бы точно могли бы добавить какое-нибудь, скажем, магическое, свойство length всем объектам…

По умолчанию, все переменные внутри функции в PHP локальны

В PHP полностью инвертированный подход к области видимости для функций, по сравнению с JS: любые глобальные переменные нужно явно объявлять, и все созданные переменные внутри функции по умолчанию локальны. Специально для новичков: не забывайте var в функциях JavaScript :).

Источник

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

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