![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Finder128 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 15.3.2008 Репутация: нет Всего: нет |
Ковыряясь в исходном коде Joomla обнаружил интересную конструкцию.
В документации об этой операции ни полслова. Попытался разобраться с этим чудом, написал такой код:
Выдаёт 15. Немного изменил:
Выдаёт 27. Поменял failed на 20, выдал 31. Остаюсь в полном неведении. Что это за операция такая может быть? Это сообщение отредактировал(а) Finder128 - 23.4.2009, 10:12 |
||||||
|
|||||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Побитовое или. Уставанвливает те биты, которые есть в обоих обоих операндах.
|
|||
|
||||
| Finder128 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 15.3.2008 Репутация: нет Всего: нет |
А практическое значение какое имеет? То бишь, в Joomla для чего такая штука присутствует? |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Смотрите:
in_array() возвращает булево значение, значит в failed будет 1 или 0. is_numeric тоже возвращает 0 или 1. 1 | 0 = 1; 1 | 1 = 1; 0 | 1 = 1; 0 | 0 = 0; Таким образом, $failed будет равна 0 только в том случае, если in_array() и is_numeric вернут false. $failed |= 18 равно записи $failed = $failed | 18; Ну дмаю это не секрет, что любой оператор можно так записать. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну почему нет: http://www.php.ru/manual/language.operators.bitwise.html
$failed= 11; $failed |=12; то есть $failed = $failed | 12; это значит выставление в результат побитово единиц, если единица либо там, либо там приводим к двоичной форме: 11 = 1011, 12 = 1100, выставляя единицы по правилу "или" получаем результат 1111 => 15, что тебе он и дал Добавлено через 3 минуты и 4 секунды мдя, опять форум перешёл в режим вялого |
|||
|
||||
| Finder128 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 15.3.2008 Репутация: нет Всего: нет |
Спасибо всем. На конкретном примере всё намного понятнее, чем в документации.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |