时间:2021-07-01 10:21:17 帮助过:3人阅读
我的数据源是utf8格式的 但是我要对这些数据做排序,由于是中文,我将其转换为gbk或gbk2312,但是排序出了部分不准确的问题
我是用php的array_multi_sort方法排序的
排序结果中会出现这样的问题
黑框里这些数据很明显按照拼音降序排列不正确 但是后面的数据却都是合适的,不知道这是什么原因?还是说gbk的库不够全?
补充一段测试代码
- <code>$array = array("鹭","昊","瀚","骅","众","怡","萃","重","恺","鑫");
- foreach($array as $val){
- $newArr[] = iconv('utf8','GBK',$val);
- }
- array_multisort($newArr,SORT_DESC,SORT_FLAG_CASE );
- 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>
- <p></p>
- <h2>回复内容:</h2>
- <p>我的数据源是utf8格式的 但是我要对这些数据做排序,由于是中文,我将其转换为gbk或gbk2312,但是排序出了部分不准确的问题</p>
- <p>我是用php的array_multi_sort方法排序的</p>
- <p>排序结果中会出现这样的问题</p>
- <p><img data-src="https://img.gxlcms.com/https://img.gxlcms.com//img/bVy27r"></p>
- <p>黑框里这些数据很明显按照拼音降序排列不正确 但是后面的数据却都是合适的,不知道这是什么原因?还是说gbk的库不够全?</p>
- <p>补充一段测试代码</p>
- <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>