代码中一般使用UTF-8字符编码,
对中文进行排序一般使用iconv()函数将UTF-8字符编码的中文变成GBK2312,
为了让可以识别的文字多一些,把字符编码变成变成GBK,
为了避免字符编码转换过程中的错误,使用iconv()时加上//IGNORE。
现在有一个数组,先按照分类名称排序再按照商品名称排序。
[ { "category": "手机", "name": "华为" }, { "category": "电脑", "name": "苹果" }, { "category": "平板", "name": "三星" }, { "category": "电脑", "name": "戴尔" }, { "category": "平板", "name": "苹果" }, { "category": "手机", "name": "苹果" } ]
<pre>Array ( [0] => Array ( [commodity_id] => 9708 [actual_amount] => 3 [channel_type] => 1 [name] => 陈鱿鱼 [category_id2] => 721 [category_name2] => 虾贝鱿类 [agent_id] => 0 [unit_convert] => N [unit_num] => 1.00 [parent_id] => 9708 [amount] => 3 [one_unit_need_convert] => 1 [convert_amount] => 3 [commodity_inout_id] => 9708 [existing] => 0 ) [1] => Array ( [commodity_id] => 9707 [actual_amount] => 1 [channel_type] => 1 [name] => 鱿鱼头 [category_id2] => 721 [category_name2] => 虾贝鱿类 [agent_id] => 0 [unit_convert] => N [unit_num] => 1.00 [parent_id] => 9707 [amount] => 1 [one_unit_need_convert] => 1 [convert_amount] => 1 [commodity_inout_id] => 9707 [existing] => 0 ) [2] => Array ( [commodity_id] => 10937 [actual_amount] => 2 [channel_type] => 1 [name] => 海南千禧圣女果 [category_id2] => 772 [category_name2] => 仁果类 [agent_id] => 0 [unit_convert] => N [unit_num] => 1.00 [parent_id] => 10937 [amount] => 2 [one_unit_need_convert] => 1 [convert_amount] => 2 [commodity_inout_id] => 10937 [existing] => 0 ) ) usort($v,function($a,$b){ if ($a['category_id2'] == $b['category_id2']) { if($a['name'] == $b['name']){ return 0; } return $a['name'] > $b['name'] ? 1 : -1; } return $a['category_id2'] > $b['category_id2'] ? 1 : -1; });
PHP中文排序
二维数组 array(6) { [0]=> array(8) { ["id"]=> string(4) "9940" ["name"]=> string(6) "茭白" ["num"]=> string(1) "6" ["pinyin"]=> string(7) "JIAOBAI" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "6" ["category2_id"]=> string(3) "694" ["category2_name"]=> string(6) "茄果" } [1]=> array(8) { ["id"]=> string(4) "9552" ["name"]=> string(6) "凉薯" ["num"]=> string(1) "1" ["pinyin"]=> string(25) "BENDILIANGSHUBENDI,BDLSBD" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "1" ["category2_id"]=> string(3) "695" ["category2_name"]=> string(6) "根茎" } [2]=> array(8) { ["id"]=> string(4) "9928" ["name"]=> string(6) "扁豆" ["num"]=> string(1) "5" ["pinyin"]=> string(7) "BIANDOU" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "5" ["category2_id"]=> string(3) "696" ["category2_name"]=> string(6) "鲜豆" } [3]=> array(8) { ["id"]=> string(4) "9573" ["name"]=> string(9) "水洗姜" ["num"]=> string(1) "2" ["pinyin"]=> string(14) "JIANGBENDI,JBD" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "2" ["category2_id"]=> string(3) "697" ["category2_name"]=> string(24) "葱姜蒜和新鲜调料" } [4]=> array(8) { ["id"]=> string(4) "9707" ["name"]=> string(9) "鱿鱼头" ["num"]=> string(1) "3" ["pinyin"]=> string(20) "BINGXIANMOYUZI,BXMYZ" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "3" ["category2_id"]=> string(3) "721" ["category2_name"]=> string(12) "虾贝鱿类" } [5]=> array(8) { ["id"]=> string(4) "9708" ["name"]=> string(9) "陈鱿鱼" ["num"]=> string(1) "4" ["pinyin"]=> string(14) "BINGXIANYU,BXY" ["unit_price"]=> string(1) "0" ["actual_num"]=> string(1) "4" ["category2_id"]=> string(3) "721" ["category2_name"]=> string(12) "虾贝鱿类" } }
$flag = []; foreach ($commoditys as $key => $value){ $commoditys[$key]['category2_name'] = iconv('UTF-8', 'GB2312',$value['category2_name']); $flag[] = $commoditys[$key]['category2_name']; } var_dump($flag); array_multisort($flag,SORT_ASC,$commoditys); foreach ($commoditys as $key => $value){ $commoditys[$key]['category2_name'] = iconv('GB2312', 'UTF-8',$value['category2_name']); $flag[] = $commoditys[$key]['category2_name']; }