我需要用smarty对数组排序。我尝试使用this code:用smarty排序数组
我的foreach:
{foreach $hooks->addblock as $addblock}
<ul>
{foreach $addblock|@sortby:"prio" as $value}
{[email protected]}: {$value}
{/foreach}
</ul>
{/foreach}
的$hooks->addblock
后续代码var_dump:
array(5) {
["filed_1"]=>
array(5) {
["id"]=>
string(7) "filed_1"
["title"]=>
string(6) "filed1"
["field"]=>
string(20) "This is test filed 1"
["size"]=>
int(740)
["prio"]=>
int(7)
}
["filed_2"]=>
array(5) {
["id"]=>
string(7) "filed_2"
["title"]=>
string(6) "filed2"
["field"]=>
string(20) "This is test filed 2"
["size"]=>
int(740)
["prio"]=>
int(6)
}
所以,我想排序值prio
(NUM)升序排列,但它确实不正确出来!
下面的结果:
我想行 “field_2” 成为第一。但我找不到解决方案。
这是修饰符(modifier.sortby.php):http://www.smarty.net/forums/viewtopic.php?p=23628#23628 我也有一个反复出现的错误:
[Sat Nov 24 20:04:52 2012] [error] [client 127.0.0.1] PHP Notice: Uninitialized string offset: 0 in /var/www/libs/plugins/modifier.sortby.php(33) : runtime-created function on line 1
模板为什么不去做呢?以及你提出的解决方案是什么? – Julien
在纯PHP中将数组进行排序,然后交给Smarty,例如使用'uasort($ addblock,function($ a,$ b){return $ a ['prio']> $ b ['prio'];}} );' –
可以说它纯粹是一种表象性的东西。无论哪种方式,这是一个有趣的谜。 –