如何实现分类按照拼音第一字母排序显示
ted演讲稿-南昌二十中
如何实现分类按照拼音第一字母排序显示 
 
http:
第一步、先写一个提取品牌第一字母的函数 其实 这是最重要的 
$$dict=array( 
  
'a'=>0xB0C4, 
'b'=>0xB2C0, 
  
'c'=>0xB4ED, 
'd'=>0xB6E9, 
  
'e'=>0xB7A1, 
'f'=>0xB8C0, 
  
'g'=>0xB9FD, 
'h'=>0xBBF6, 
  
'j'=>0xBFA5,
  
'k'=>0xC0AB, 
'l'=>0xC2E7, 
  
'm'=>0xC4C2, 
'n'=>0xC5B5, 
  
'o'=>0xC5BD, 
'p'=>0xC6D9, 
  
'q'=>0xC8BA, 
'r'=>0xC8F5, 
  
's'=>0xCBF9, 
't'=>0xCDD9, 
  
'w'=>0xCEF3, 
'x'=>0xD188, 
  
'y'=>0xD4D0,
  
'z'=>0xD7F9, 
  
); 
取GB2312字符串首字母,原理是GBK汉字是按拼音顺序编码的. 
自定义函数get_letter() 
function
get_letter($$input) 
  
{ 
global $$dict;
  
$$str_1 = substr($$input, 0, 1); 
if ($$str_1 >= chr(0x81) && $$str_1 <=
chr(0xfe)) { 
  
$$num =
hexdec(bin2hex(substr($$input, 0, 2))); 
foreach ($$dict as $$k=>$$v){ 
if($$v>=$$num) 
  
break; 
} 
  
return $$k; 
  
} 
else{ 
  
return $$str_1; 
  
}
} 
?> 
第二步 结合我们的系统进行查询 
sql
= 'SELECT * FROM ' .
$$GLOBALS['ecs']->table('brand').' order by
brand_name'; 
    $$brand_array =
$$GLOBALS['db']->getall($$sql); 
$$brand_list =
array(); 
for($$i=0;$$i
   $$brand_list[get_letter($$brand_array[$$
i]['brand_name'])][$$brand_array[$$i]['brand_id']]
$$brand_array[$$i]['brand_name'].
   
}
= 
?> 
得到一个以第一字母为主键的数组 
第三步 显示
 foreach ($$brand_list AS $$row=>$$idx)
{ 
  
  $$show .=
cellspacing=
cellpadding=
| color= | #0073CF;text-deocration:none | ||
|  | ||
| 
 
 |