我有一個聰明的模板,其中一個插件爲我加載一個數組。這個數組包含一些本身就是stdClass對象數組的元素,而其他元素只是stdClass對象。舉例來說,我可能有Smarty訪問第二維數組的特定元素
Array
(
[0] => Array
(
[0] => stdClass Object
(
[id] => 1
[avatar_file] => joey_thumb.jpg
[group] => 0
[order_in_group] => 0
)
[1] => stdClass Object
(
[id] => 2
[avatar_file] => christy_thumb.jpg
[group] => 0
[order_in_group] => 1
)
)
[1] => stdClass Object
(
[id] => 11
[avatar_file] => angela_thumb.jpg
[group] =>
[order_in_group] =>
)
)
在我的模板,我有話要的效果:
{foreach from=$membersArray item=memberOrGroup}
{if is_array($memberOrGroup)}
<div>{$memberOrGroup[0].id}</div>
{else}
<div>{$memberOrGroup.id}</div>
{/if}
{/foreach}
但只要它擊中像任何正常更換在我div標籤上面有一個像$ memberOrGroup [0]這樣的數組引用,我得到錯誤「不能使用類型爲stdClass的對象作爲數組」。我有些不知所措,因爲我可以打印原始數組,並且顯示了像上面那樣放置的元素。我甚至可以使用{$ memberOrGroup [0] | print)r}在「is_array」if塊中打印print_r,並打印出一個填充了正確數據的stdClass對象,並且不會給我一個錯誤。
我在網上看到了幾個使用嵌套的foreach循環的解決方案,但是在我的循環的實際版本中,第二維數組的每個元素都必須放置在特定的位置(如$ memberOrGroup [0 ]有一個特殊的地方,$ memberOrGroup [1]也是如此)。
我已經嘗試了幾個變體,包括使用部分代替,但我仍然回到相同的錯誤。
Doh!我新的它一定是愚蠢的!我不常用smarty來知道......(。)是用於數組的,( - >)是用於對象的。疑難雜症! – Matthew 2011-01-23 23:37:41
omg ....這是真的嗎?聽起來如此明顯...... – Marnix 2011-01-23 23:42:54