php数组中包含中文的排序方法

   php数组中文排序,文件格式一般用utf8,直接用asort排序不行。若是gbk和gb2312可以。这跟编码有关。gbk和gb2312本身的编码就是用拼音排序的。

  .代码如下:

  function utf8_array_asort(&$array) {

  if(!isset($array) || !is_array($array)) {

  return false;

  }

  foreach($array as $k=>$v) {

  $array[$k] = iconv('UTF-8', 'GB2312',$v);

  }

  asort($array);

  foreach($array as $k=>$v) {

  $array[$k] = iconv('GB2312', 'UTF-8', $v);

  }

  return true;

  }

  使用例子:

  .代码如下:

  $abc = array('a'=>'猜', 'b'=>'我','c'=>'哦','d'=>'棍','e'=>'f','f'=>'爸','z'=>'州');

  utf8_array_asort($abc);

  print_r($abc);

  但是使用这个函数发现,有些文字会出错,可能是utf8编码认不出某些字导致的“非法字符”,据了解GBK字符集比较大,换成GBK,再加上IGNORE忽略掉不认识的字符 ,改成下面这样

  .代码如下:

  private function utf8_array_asort(&$array) {

  if(!isset($array) || !is_array($array)) {

  return false;

  }

  foreach($array as $k=>$v) {

  $array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);

  }

  asort($array);

  foreach($array as $k=>$v) {

  $array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);

  }

  return true;

  }

时间: 2024-10-26 05:48:22

php数组中包含中文的排序方法的相关文章

php数组中包含中文的排序方法_php实例

php数组中文排序,文件格式一般用utf8,直接用asort排序不行.若是gbk和gb2312可以.这跟编码有关.gbk和gb2312本身的编码就是用拼音排序的. 复制代码 代码如下: function utf8_array_asort(&$array) {if(!isset($array) || !is_array($array)) {  return false;}foreach($array as $k=>$v) {  $array[$k] = iconv('UTF-8', 'GB23

Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享_Lua

一.判断字符串中包含中文字符的方法 遍历数组,对每个字节使用string.byte(),发现有大于127的,就是汉字,可以参照下面的代码. 二.计算字符串宽度函数 复制代码 代码如下: -- 计算字符串宽度   local str = "Jimmy: 你好,世界!" local fontSize = 20 local lenInByte = #str local width = 0   for i=1,lenInByte do     local curByte = string.by

PHP 使用用户自定义的比较函数对数组中的值进行排序

原文:PHP 使用用户自定义的比较函数对数组中的值进行排序      usort     (PHP 4, PHP 5) usort -      使用用户自定义的比较函数对数组中的值进行排序        说明            bool usort        ( array &$array       , callable $cmp_function       )          本函数将用用户自定义的比较函数对一个数组中的值进行排序.如果要排序的数组需要用一种不寻常的标准进行排序

编程c语言-vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表

问题描述 vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表 这样定义对么 编译时报错 缺少:在*前面 这是哪错了啊 请高手指点指点 解决方案 你把两个结构体的定义调换一下次序就没问题啦,要先声明或定义结构体:Station,才能使用 解决方案二: 因为struct Station是在struct Train结构体之后才定义的,所以你要在这之前先声明一下struct Train 解决方案三: 做一个前向声明,或者调换两个结构位置都可以. 解决方案四: 结构体数组

jquery获得div数组中元素的id的方法

问题描述 jquery获得div数组中元素的id的方法 我把多个div都放在数组里,我该怎么使用$操作符来把数组元素赋给一个新变量?普通情况是var div = $(''#div1''),我这种情况该怎么写? 解决方案 var divarr=[]; for(var i=0;i<divarr.length;i++){ var div = $(divarr[i]); } 解决方案二: var arr=['div1','div2','div3']; for(var i=0;i<arr.length;

php在数组中查找指定值的方法_php技巧

本文实例讲述了php在数组中查找指定值的方法.分享给大家供大家参考.具体如下: php中有两个函数可以判断数组中是否包含指定的值,分别是:array_search($value, $array)和in_array($value, $array),array_search可以找出指定的值在数组中出现的位置,in_array函数只判断数组中是否存在指定的值,返回bool值 <?php $array = array("Perl", "PHP", "Java

jsp 中 ActionForm中文乱码问题解决方法

  jsp教程 中 actionform中文乱码问题解决方法 先我们来了解一下actionform actionform概念 actionform用于封装用户的请求参数,而请求参数是通过jsp页面的表单域传递过来的.因此应 保证actionform的参数,与表单域的名字相同. 编辑本段actionform配置 所有的actionform都被配置在struts-config.xm l文件中,该文件包括了一个form-beans的元素, 该元素内定义了所有actionform,每个actionfor

JavaScript判断数组是否包含指定元素的方法

  本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 /** * Array.prototype.[method name] allows you to define/overwrite an objects method * needle is the item you are searching

php计算多维数组中所有值总和的方法

本文实例讲述了php计算多维数组中所有值总和的方法.分享给大家供大家参考.具体实现方法如下: php 内置函数 array_sum() 函数返回数组中所有值的总和,只能返回一维数组的总和; 计算多维数组所有值的和就要自定义函数了; ? 1 2 3 4 5 6 7 8 9 10 function get_sum($array) { $num = 0; foreach($array as $k => $v) { if(is_array($v)) { $num += get_sum($v); } }