今天我注意到了奇怪的行为,然后试图检查数组是否有价值。
我试过{% if key in array|keys %} ... {% endif %}
和条件始终等于true
。
我后来试图这样做:{{ dump('a' in [0, 1, 2]) }}
。
猜猜什么价值被抛弃了?某种程度上它是“真实的”。 你们知道为什么会这样吗?
我可以使用'a' in [0, 1, 2]|join
解决它,但这不是我想要弄清楚的。
答案 0 :(得分:0)
它不是树枝,它是php。以下代码:
var_dump(in_array('a', array(0, 1, 2)));
打印:
bool(true)
将字符串与int进行比较时,字符串将转换为int。在这种情况下,' a'变为0,从而匹配其中一个数组键。
尝试执行var_dump("foobar" == 0)
,您也会看到它也是如此。
您可以使用foo['a'] is defined
代替,在此演示:http://twigfiddle.com/y126mg