112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,416
1

Работа с перечислением или что-то в этом роде

09.11.2015, 11:29. Показов 766. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
В своём приложении на C# я работаю с перечислением. Выглядит это так:
Само перечисление:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
[Flags]
    public enum TICKETS_STATUSES
    {
        InitialReception = 0,
        RepeatedReception = 0x1,
        PrimaryReception1 = 0x2,
        PrimaryReception2 = 0x4,
        PrimaryReception3 = 0x8,
        PrimaryReception4 = 0x10,
        PrimaryReception5 =0x20,
        PrimaryReception6 = 0x40,
        PrimaryReception7 = 0x80
    }
Если я хочу узнать какие статусы имеет объект, то я вызываю специальный метод:
C#
1
If (IsStatusSet(td.IsReserved, TICKETS_STATUSES.PrimaryReception3))
Сам метод:
C#
1
2
3
4
static bool IsStatusSet(byte tb, TICKETS_STATUSES status)
        {
            return ((tb & (byte)status) == (byte)status);
        }
Метод вернёт true если статус (в данном случаи .PrimaryReception3) входит в число (td.IsReserved).
Можно ли нечто подобное реализовать на PHP?
Я погуглил, узнал, что перечислений как таковых в языке нет. Их можно эмулировать при большом желании, но это достаточно сложно.
Вот что у меня сейчас есть на PHP:
PHP
1
2
3
4
5
6
7
8
9
<?php
$result = $client->GetAvailableTicketsForDate(array('doctor_id'=>$_SESSION['DoctorID'], 'date'=>$_GET[DateTicket]));    
        foreach($result->GetAvailableTicketsForDateResult->DoctorTicket as $object)
        {
            $TimeAndDate = $object->ReceptionDateTime; 
            $Time = substr($TimeAndDate, strrpos($TimeAndDate, 'T')+1);
            echo "<a href='Identificate.php?TimeTicket=$Time&ID=$object->ID'>".nl2br($Time . PHP_EOL)."</a>";       
        }   
        ?>
Я отправляю запрос к методу Web-службы, получаю сложный объект ($result), потом достаю из него то что мне нужно (в данном случаи я доставал время, но так же я могу достать и статус).
Вот как мне просто и красиво узнавать содержится ли в числе тот или иной статус?
0
09.11.2015, 11:29
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2015, 11:29
Ответы с готовыми решениями:

Работа с массивом объектов или что-то в этом роде
Здравствуйте. У меня есть цикл в котором происходит вывод таблицы с датами на 30 дней вперёд. Так же у меня есть сложный объект, в...

Сортировка ячеек таблицы или что то в этом роде)
Всем доброго времени суток. Друзья, мне нужно разработать PHP-скрипт, который генерирует Треугольник Паскаля. &lt;!DOCTYPE HTML PUBLIC...

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

1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
09.11.2015, 19:03 2
FaceHoof,
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<pre>
<?php
/* Значение 0 в битовых масках не используется!
 * Это нарушает семантику битовых масок.
 * define('INITIALRECEPTION' , 0b00000000);
 */
define('REPEATEDRECEPTION', 0b00000001);
define('PRIMARYRECEPTION1', 0b00000010);
define('PRIMARYRECEPTION2', 0b00000100);
define('PRIMARYRECEPTION3', 0b00001000);
define('PRIMARYRECEPTION4', 0b00010000);
define('PRIMARYRECEPTION5', 0b00100000);
define('PRIMARYRECEPTION6', 0b01000000);
define('PRIMARYRECEPTION7', 0b10000000);
 
function IsStatusSet($value, $status)
{
    return ($value & $status) != 0;
}
 
$status1 = PRIMARYRECEPTION1;
$status2 = PRIMARYRECEPTION4 | PRIMARYRECEPTION5 | PRIMARYRECEPTION6;
$status3 = PRIMARYRECEPTION6 | REPEATEDRECEPTION;
 
var_dump(IsStatusSet($status1, PRIMARYRECEPTION1));
var_dump(IsStatusSet($status1, PRIMARYRECEPTION3));
var_dump(IsStatusSet($status2, REPEATEDRECEPTION));
var_dump(IsStatusSet($status2, PRIMARYRECEPTION4));
var_dump(IsStatusSet($status3, PRIMARYRECEPTION3));
var_dump(IsStatusSet($status3, REPEATEDRECEPTION));
Код
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2015, 19:03
Помогаю со студенческими работами здесь

массив массивов или что-то в этом роде
у меня есть число а -составное которое делится на b1,b2,...,bn; и в зависимости от bi надо создать столько динамических двумерных...

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

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

Объединение таблиц или что то в этом роде
есть запрос SELECT * FROM TABLE(некая_процедура(некий_айди)) Данный вопрос работает, выдает на выход таблицу из строк 10 максимум ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Linux API: Полное руководство
hw_wired 08.02.2025
Linux API – это низкоуровневый программный интерфейс, обеспечивающий взаимодействие пользовательских приложений с ядром операционной системы. Он включает набор системных вызовов, библиотечных функций. . .
Асинхронное программировани­­­­­е и эмуляция async/await в C (СИ)
hw_wired 08.02.2025
Язык программирования C, несмотря на свой возраст, предоставляет неплохие средства для реализации асинхронных операций, позволяя создавать эффективные решения для обработки параллельных задач. В. . .
Как сгенерировать случайное число в указанном диапазоне в JavaScript
bytestream 08.02.2025
В JavaScript генерация случайных чисел основана на детерминированном алгоритме, который создает последовательность псевдослучайных значений. Встроенный метод Math. random() возвращает псевдослучайное. . .
Как получить список всех таблиц в PostgreSQL
bytestream 08.02.2025
PostgreSQL предлагает несколько методов для получения списка таблиц в базе данных. Наиболее распространенный способ - использование системного каталога pg_tables, который содержит информацию обо всех. . .
Java Spring для начинающих
bytestream 08.02.2025
Spring Framework - это универсальное решение для создания корпоративных Java-приложений. Он предоставляет комплексную программную и конфигурационную модель для современных приложений на Java. Spring. . .
Асинхронное программировани­­­­­­е и async/await в Visual Basic
bytestream 08.02.2025
В основе асинхронного программирования в Visual Basic лежит концепция неблокирующего выполнения операций. Когда программа встречает длительную операцию, например, чтение большого файла или запрос к. . .
Async/await и асинхронное программировани­­е в Delphi
bytestream 08.02.2025
Асинхронное программирование является неотъемлемой частью разработки современных приложений, позволяя создавать отзывчивые и эффективные программы. В Delphi реализация асинхронности опирается на. . .
Асинхронное программировани­­­­­е и async/await в C#
bytestream 08.02.2025
Асинхронное программирование - концепция, позволяющая приложениям эффективно выполнять длительные операции без блокировки основного потока выполнения. В контексте современной разработки на C# это. . .
Асинхронное программировани­­­­­е и горутины/каналы в Go
bytestream 08.02.2025
Язык Go изначально разрабатывался с учетом современных многоядерных процессоров и необходимости эффективного параллельного выполнения задач. В отличие от традиционных подходов к асинхронному. . .
Как восстановить stash в Git
hw_wired 08.02.2025
Git stash - это средство для временного сохранения изменений в рабочей директории. В процессе разработки часто возникают ситуации, когда нужно быстро переключиться на другую задачу, но текущие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru