如何确定我的变量是对象还是带树枝的数组?

How can I find out if my variable is an object or an array with twig?

我试图找出我的变量是对象还是数组:

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

但在某些情况下我得到的结果是:

It is an array

你是对的,twig iterable 测试有缺点,因为对象也可以迭代。 PHP 具有像 is_arrayis_object 这样方便的函数,但是,无法直接访问 Twig 中的常规 PHP 函数。所以,我们需要写一个 Twig extension/Test,即添加一个新的 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 %}