问题:TP从服务器数据中取出的collection数据,当进一步在网页中进行分页显示时,需要调用order函数,实现类似如下图的排序。

当点击页面中的相关内容时,实现对服务器数据进行重排,就要调用TP编写的order函数。

但是,上述属性中包括int属性,包括中文字符串属性,我们希望按单位名称和单位简称按汉字拼音进行排序,如何修改。

解决方法

将TP的order函数源码从(order函数位于think-helper\src\Collection.php文件中)

    public function order(string $field, string $order = 'asc')
{
return $this->sort(function ($a, $b) use ($field, $order) { $fieldA = $a[$field] ?? null;
$fieldB = $b[$field] ?? null; return 'desc' == strtolower($order) ? $fieldB > $fieldA : $fieldA > $fieldB; });
}

改为:

    public function order(string $field, string $order = 'asc')
{
return $this->sort(function ($a, $b) use ($field, $order) {
//添加对中文的支持。
//xiaojie add代码,添加对中文的支持。
$fieldA = $a[$field] ?? null;
$fieldB = $b[$field] ?? null;
//注意,如果取出的$fieldA是数字,就不能用preg_match。所以,应该加上一个字符串判断类型。因为有些时候会对数字进行排序。 if (isset($fieldA) && isset($fieldB) && is_string($fieldA) &&is_string($fieldB) && preg_match("/[\x7f-\xff]/", $fieldA)){ //如果字段内容中有中文。
$coll = collator_create( 'zh-CN' );
$res = collator_compare( $coll, $fieldA, $fieldB );
return 'desc' == strtolower($order) ? $res<0 : $res>0;
}
else{
// $fieldA = $a[$field] ?? null;
// $fieldB = $b[$field] ?? null; return 'desc' == strtolower($order) ? $fieldB > $fieldA : $fieldA > $fieldB;
}
});
}

即可。

最新文章

  1. SQL --Chater03 聚合与排序
  2. JKS TO PEM
  3. HBase -- 基于HDFS的开源分布式NoSQL数据库
  4. 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
  5. bzoj3208:花神的秒题计划I
  6. CodeForces 362B Petya and Staircases
  7. 转:PHP – Best Practises
  8. SQL 结构化查询语言
  9. wordpress教程之get_posts()
  10. Python爬虫----Beautiful Soup4 基础
  11. webapp之路--百度手机前端经验(转)
  12. vmware安装FreeBSD8.3全攻略【教程】
  13. Java 关于路径
  14. php银联网页支付实现方法
  15. vue 保留两位小数 不能直接用toFixed(2) ?
  16. [Kafka] |FAIL|rdkafka#producer-1 : Receive failed: Disconnected
  17. Maven私服(Nexus)资源上传下载
  18. vtiger7菜单管理
  19. linux下的ping工具--fping
  20. Error -26631: HTTP Status-Code=400 (Bad Request) for

热门文章

  1. shopify 学习链接整理
  2. [ Laravel 5.6 文档 ] 进阶系列 —— 任务调度
  3. vue2整个项目中,数据请求显示loading图----------未完成阅读,码
  4. RF-获取body
  5. LA3403 天平难题
  6. Nmap 扫描器的使用技巧
  7. 通过使用 NTLite 工具实现精简Windows系统
  8. Day004 顺序结构
  9. 腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器
  10. 技术博客:Azure Functions + Azure Storage 开发