使用“in”运算符时出现奇怪的Twig行为

时间:2015-04-08 14:23:26

标签: twig

今天我注意到了奇怪的行为,然后试图检查数组是否有价值。

我试过{% if key in array|keys %} ... {% endif %} 和条件始终等于true

我后来试图这样做:{{ dump('a' in [0, 1, 2]) }}

猜猜什么价值被抛弃了?某种程度上它是“真实的”。 你们知道为什么会这样吗?

我可以使用'a' in [0, 1, 2]|join解决它,但这不是我想要弄清楚的。

1 个答案:

答案 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