Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
95 / 87 / 60
Регистрация: 21.04.2014
Сообщений: 1,204
1

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

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

Здравствуйте.
В своём приложении на 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2015, 11:29
Ответы с готовыми решениями:

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

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

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

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

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
1
1933 / 1762 / 822
Регистрация: 23.01.2014
Сообщений: 6,205
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2015, 19:03

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.