2014-10-16 60 views
0

Smarty-3.1.20smarty php in_array無法正常工作

重寫php webapp後端。使用Smarty是因爲幾年前它需要使用,爲什麼不行,但現在它破壞了我的頭腦。嵌套模板輸出複選框。

爲什麼in_array返回true,如果我將其中一個值粘貼爲字符串,而不是如果我將其作爲變量引用?數組是var_dump-ed並且是數組,{$ otherArray [0]}返回正確的變量。 $ anArray [loop]打印正確的變量。數組字符串中沒有額外的空白。阻止我之前,我把它全部出來,粘貼JSON到HTML的底部,做這一切與JavaScript(下一次肯定)

TL;博士:

in_array不是從一個變量返回true,但從一個字符串?

<input type='checkbox' name='{$anArray[loop]}' value='{$anArray[loop]}' 
{if in_array($anArray[loop]}, $otherArray)} checked{/if}> 
<br /> 
{$anArray[loop]}} 

回答

0

嗯,看來你在這裏不正確地使用$跡象,這也許應該是:

<input type='checkbox' name='{$anArray[$loop]}' value='{$anArray[$loop]}' 
{if in_array($anArray[$loop]}, $otherArray)} checked{/if}> 
<br /> 
{$anArray[$loop]}} 
+0

有趣。這兩個想法對於整個數組都返回'true',也就是說,無論是否存在數組匹配,都會檢查所有框。請注意,{$ anArray [loop]} - 在「loop」中沒有$前綴 - 將正確的字符串返回到最後一行中的模板。我將繼續玩這個遊戲,如果我解決了它會發布。爲了完成這項工作,我在javascript中重寫了它。 – openquestions 2014-10-17 12:06:12

0

嘗試用:

{if $anArray.$loop|in_array:$otherArray}checked{/if}