当前位置:Gxlcms > PHP教程 > 关于中文排序的问题

关于中文排序的问题

时间:2021-07-01 10:21:17 帮助过:3人阅读

我的数据源是utf8格式的 但是我要对这些数据做排序,由于是中文,我将其转换为gbk或gbk2312,但是排序出了部分不准确的问题

我是用php的array_multi_sort方法排序的

排序结果中会出现这样的问题

黑框里这些数据很明显按照拼音降序排列不正确 但是后面的数据却都是合适的,不知道这是什么原因?还是说gbk的库不够全?

补充一段测试代码

  1. <code>$array = array("鹭","昊","瀚","骅","众","怡","萃","重","恺","鑫");
  2. foreach($array as $val){
  3. $newArr[] = iconv('utf8','GBK',$val);
  4. }
  5. array_multisort($newArr,SORT_DESC,SORT_FLAG_CASE );
  6. echo "</code><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><code>";</li><li>print_r($newArr);</li><li>die;</code></li></ol></pre>
  7. <p></p>
  8. <h2>回复内容:</h2>
  9. <p>我的数据源是utf8格式的 但是我要对这些数据做排序,由于是中文,我将其转换为gbk或gbk2312,但是排序出了部分不准确的问题</p>
  10. <p>我是用php的array_multi_sort方法排序的</p>
  11. <p>排序结果中会出现这样的问题</p>
  12. <p><img data-src="https://img.gxlcms.com/https://img.gxlcms.com//img/bVy27r"></p>
  13. <p>黑框里这些数据很明显按照拼音降序排列不正确 但是后面的数据却都是合适的,不知道这是什么原因?还是说gbk的库不够全?</p>
  14. <p>补充一段测试代码</p>
  15. <pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><code>$array = array("鹭","昊","瀚","骅","众","怡","萃","重","恺","鑫");</li><li>foreach($array as $val){</li><li> $newArr[] = iconv('utf8','GBK',$val);</li><li>}</li><li>array_multisort($newArr,SORT_DESC,SORT_FLAG_CASE );</li><li>echo "</code><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><code>";</li><li>print_r($newArr);</li><li>die;</code></li></ol></pre></li><li> </li><li> </li><li> <p class="answer fmt" data-id="1020000005933314"></li><li> </p><p>若按照汉字的拼音排序结果不一定准确, 也可以按照汉字的<code>ascii</code>排序, 但程序复杂度上升, 若你的分类数据是从数据库读出来的, 可以试试在数据库中添加<code>排序字段</code> </p></li></ol></pre>

人气教程排行