4

我需要用 smarty 对数组进行排序。我尝试使用此代码

我的前锋:

 {foreach $hooks->addblock as $addblock}
  <ul>
  {foreach $addblock|@sortby:"prio" as $value}
    {$value@key}: {$value}
  {/foreach}
  </ul>
 {/foreach}

的 var_dump $hooks->addblock

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 我也有一个反复出现的错误:

[2012 年 11 月 24 日星期六 20:04:52] [错误] [客户端 127.0.0.1] PHP 注意:未初始化的字符串偏移量:/var/www/libs/plugins/modifier.sortby.php(33) 中的 0 :运行时创建第 1 行的函数

4

2 回答 2

4

PHP 注意:未初始化的字符串偏移量:/var/www/libs/plugins/modifier.sortby.php(33) 中的 0 :第 1 行运行时创建的函数

这提供了有关sortby修饰符如何工作的线索。

您链接到的文档说:

'-' 让您以相反的顺序排序,而# 让您以数字而非字符串排序(您也可以使用 '-#age' 以相反的顺序以数字排序)

您的prio字段是一个整数,尽管在 PHP 中您可以透明地跨整数和字符串执行许多操作,但该通知表明sortby已通过单独访问每个字符来实现字符串排序。这不可能与整数一起使用。

所以,你应该使用#修饰符:

{foreach $addblock|@sortby:"#prio" as $value}
                            ^
于 2012-11-24T22:23:33.433 回答
0

不要这样做。排序不是模板引擎应该做的任务。这显然是业务逻辑,需要进入控制器。

于 2012-11-24T19:34:47.230 回答