2016-06-21 34 views
3

問題標題已經問:在枝條模板{{0 in ['a','b','99']}}中返回1.爲什麼?

在樹枝模板{{0 in ['a', 'b', '99']}}打印1。爲什麼?我有'0'作爲一個值,我不能檢查它與數組,因爲該值總是彈出現有。在一天結束時:我如何實現在Twig中針對字符串數組檢查零的目標?

+1

參見:http://stackoverflow.com/q/28437510/3933332 – Rizier123

+0

@ Rizier123感謝,但Q&A不提供我有一個關於如何在Twig中實現我的目標的解決方案。我得到了這個原因,但也需要一個解決方案。 –

回答

1

PHP的比較類型強制轉換爲必要時的整數。你正在檢查一個整數是否在數組中。對於此比較,(int) 'a'被強制爲0。因此0被視爲在陣列中。

爲了避免這種情況,你可以使用in_array與嚴格的選項:

in_array('0', ['a', 'b', '99'], true) 
+0

考慮到這一點,我相信'''var_dump(in_array(0,['1','2']))'''應該產生''''true'',對嗎?它會產生'''false'''(至少在PHP 7中)。 '''var_dump(in_array(0,[1,2]))'''''那麼爲什麼呢? –

+1

因爲字符串「1」被強制爲「1」。與任何整數相比,字符串被強制爲「0」。 –

+0

好的,那麼我們如何與整數零比較,然後在小枝當然? –

相關問題