Как я могу узнать, является ли моя переменная объектом или массивом с веткой? - PullRequest
1 голос
/ 07 февраля 2020

Я пытаюсь выяснить, является ли моя переменная объектом или массивом:

{% if variable is iterable %}It is an array{% else %}it is an object{% endif %}

Но в некоторых случаях я получаю результат:

It is an array

1 Ответ

1 голос
/ 09 февраля 2020

Вы правы, тест на веточку iterable имеет недостатки, так как объекты также могут быть итеративными. PHP имеет удобные функции, такие как is_array и is_object, однако получить прямой доступ к обычной функции PHP в Twig невозможно. Итак, нам нужно написать расширение / тест Twig, т.е. добавить новый Twig_SimpleTest, чтобы проверить, является ли элемент is_array. Вы можете добавить этот тест в конфигурацию своего приложения после общей ветки bootstrap.

$isArray= new Twig_SimpleTest('array', function ($value) {
    return is_array($value);
});
$twig->addTest($isArray);

и просто использовать ее следующим образом:

{% if var is array%} It is an array
{% else %} It is an object{% endif %}
...