powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подскажите, как сделать интерфейс Enum в PHP
8 сообщений из 8, страница 1 из 1
Подскажите, как сделать интерфейс Enum в PHP
    #39134972
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня такая хотелка.
Допустим есть массив $data (или объект).
В нем есть элемент $data['item']; это может быть одиночное значение, а может быть массив или список.
Мне нужно сделать какие-то операции с этим элементом или элементами; если точнее, то этот элемент (или список элементов) используется в шаблоне.

Можно сделать так:
Код: php
1.
2.
3.
4.
5.
6.
7.
if (is_array($data['item'])) {
  foreach ($data['item'] as $item) {
    echo $item;
  }
} else {
  echo $data['item'];
}



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

Не подскажите, как этого можно добиться?
Насколько я понял из документации, в случае объектов последний должен реализовывать интерфейс Traversable (вернее Iterator*).
Но мне было бы удобнее работать с массивами. Можно ли с ними сделать подобное?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135330
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B., ну сделайте приведение типа к массиву... http://php.net/manual/en/language.types.array.php
Converting to array For any of the types: integer, float, string, boolean and resource, converting a value to an array results in an array with a single element with index zero and the value of the scalar which was converted. In other words, (array)$scalarValue is exactly the same as array($scalarValue).
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135386
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B., а может быть массив или список
а разве в пхп это не одно и тоже?
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135388
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по теме. само оно так работать не будет.
если нужно итерировать как массив - то и формируй сразу массив.
если одиночный элемент - то оборачивай его в массив. да и все.
а в шаблоне просто foreach будет
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135413
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneAlibek B., ну сделайте приведение типа к массиву...
Это конечно можно.
Но ведь приведение типов это лишняя нагрузка на процессор и лишний расход памяти.
Если уж делать интерфейс перечисления, то я бы сразу реализовал работу с объектами без приведения.

r uесли нужно итерировать как массив - то и формируй сразу массив.
если одиночный элемент - то оборачивай его в массив. да и все.

Я использую в качестве шаблонизатора сам PHP.
То есть мой шаблон — это HTML-файл с минимальными вставками PHP-кода в альтернативном синтаксисе.
Код: html
1.
2.
3.
4.
5.
6.
...
<? $data = (is_array($data) ? $data : array($data)); ?>
<? foreach ($data as $item): ?>
<p class="para"><?=$item?></p>
<? endforeach; ?>
...


Вот это вот $data = (is_array($data) ? $data : array($data)) в шаблоне выглядит инородным, я бы хотел обойтись без него.
Или так не получится?
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135431
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Вот это вот $data = (is_array($data) ? $data : array($data)) в шаблоне выглядит инородным, я бы хотел обойтись без него.
в шаблоне конечно инородно. все действия с данными нужно выше, на этапе формирования этих данных. в модели например.
а дело шаблона только вывести эти данные. не занимаясь анализом и модификацией данных.
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135823
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Вот это вот $data = (is_array($data) ? $data : array($data)) в шаблоне выглядит инородным, я бы хотел обойтись без него.

Ну так foreach((array)$data as $item)
...
Рейтинг: 0 / 0
Подскажите, как сделать интерфейс Enum в PHP
    #39135860
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, я как-то не сообразил, что null нормально приводится к пустому массиву.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подскажите, как сделать интерфейс Enum в PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]