Переменные в шаблонах InstantCMS 2

InstantCMS 2.X

Условия переменных в шаблонах InstantCMS 2

#31 1 апреля 2023 в 07:45

Как прописать условия для мультисписка? Пробую так и не получается:

  1. <?php if ($item['metka'] == 1) { ?>
  2. выбрано
  3. <?php } else { ?>
  4. не выбрано
  5. <?php } ?>
#32 1 апреля 2023 в 10:41

 Гарри, а что у вас лежит внутри $item['metka'] — проверяли?

#33 1 апреля 2023 в 21:23

 Make, я не знаю как проверить.

В настройках указаны такие значения:

1 | Значение 1 

2 | Значение 2

#34 1 апреля 2023 в 22:47
#35 3 апреля 2023 в 13:35

Вот

Make

Проверил.

Получилось сделать, но не до конца.

  1. <?php
  2. if (in_array($item['metka'], ([11000,10000,01000]))) { ?>
  3. Наш выбор
  4. <?php } else if ($item['metka'] == 00100) { ?>
  5. Наш выбор
  6. <?php } else { ?>
  7. Тест
  8. <?php } ?>

Почему-то срабатывают только 2 первых выбранных пункта(11000, 10000). С остальными напрочь не хочет работать. Условия прописывал по-разному и ни в какую, везде выводится «Тест».  

Сейчас протестировал и заметил, что работает если выбран только 1 пункт(10000,11000, 101000 и т.д.) Если он не выбран, то все условия не срабатывают и выводится «Тест». 

В чем может быть причина?

#36 3 апреля 2023 в 14:53

Вот

Make

Проверил.

Получилось сделать, но не до конца.

  1. <?php
  2. if (in_array($item['metka'], ([11000,10000,01000]))) { ?>
  3. Наш выбор
  4. <?php } else if ($item['metka'] == 00100) { ?>
  5. Наш выбор
  6. <?php } else { ?>
  7. Тест
  8. <?php } ?>

Почему-то срабатывают только 2 первых выбранных пункта(11000, 10000). С остальными напрочь не хочет работать. Условия прописывал по-разному и ни в какую, везде выводится «Тест».  

Сейчас протестировал и заметил, что работает если выбран только 1 пункт(10000,11000, 101000 и т.д.) Если он не выбран, то все условия не срабатывают и выводится «Тест». 

В чем может быть причина?

Гарри
  1. <?php
  2. if (in_array($item['metka'], [11000, 10000, 1000])) {
  3. echo "Наш выбор";
  4. } else if ($item['metka'] == 100) {
  5. echo "Наш выбор";
  6. } else {
  7. echo "Тест";
  8. }
  9. ?>

Свои данные типа 01000 и 00100 подкорректируйте, так работать не будет. А переменную или массив лучше вардампом смотреть — https://www.php.net/manual/ru/function.var-dump.php

#37 3 апреля 2023 в 15:01
  • <?php
  • if (in_array($item['metka'], [11000, 10000, 1000])) {
  • echo «Наш выбор»;
  • } else if ($item['metka'] == 100) {
  • echo «Наш выбор»;
  • } else {
  • echo «Тест»;
  • }
  • ?>
KoRn

Это получается, что значения должны начинаться с 1, а все 0 перед ней стираться?

#38 3 апреля 2023 в 15:05

Это получается, что значения должны начинаться с 1, а все 0 перед ней стираться?

Гарри

Ну да, желательно. Выдержка из статьи -

Нули в начале числа в языке PHP интерпретируются как указание системы счисления. Например, если число начинается с 0x, то оно считается шестнадцатеричным, а если с 0, то восьмеричным.

В случае с числом 00100, PHP будет интерпретировать его как восьмеричное число, где 100 — это 64 в десятичной системе. Если вы хотели использовать десятичную систему, то следует просто использовать число без нулей в начале: 100.

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

#39 3 апреля 2023 в 17:02

Получилось сделать, но не до конца.

Гарри

Я бы сначала посмотрел какого типа переменные находятся в $item['metka'], вдруг там строки?

#40 3 апреля 2023 в 17:31
  1. in_array($item['metka'], (['11000', '10000', '01000'])
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.