質問: sqlのデーターを『あ行』『か行』・・と区切りたい sqlの条件検索で取得した任意の配列データー(すべてひらがな) あき、あり、いか、きのこ、けーき、たぬき、たわし・・・ を『あ行』、『か行』、・・と区切って表示したく悩んでいます。 あ行 あき あり いか か行 きのこ けーき た行 たぬき たわし (以下略) 行ごとにマッチする文字があるかないか判定して、selectをすればできないことはないのですが、それではあまりに効率が悪いような気がします。 効率のよさそうなソースがわかる方がいましたら、ぜひ教えてください。よろしくお願いします。
回答: mb_eregなどで調整する手もあります php $rows[]=array('name'='安藤','kana'=>'あんどう','age'=>18); $rows[]=array('name'=>'伊藤','kana'=>'いとう' ,'age'=>20); $rows[]=array('name'=>'遠藤','kana'=>'えんどう','age'=>15); $rows[]=array('name'=>'佐藤','kana'=>'さとう' ,'age'=>30); $rows[]=array('name'=>'長野','kana'=>'ながの' ,'age'=>40); foreach($rows as $key=>$array){ if(mb_ereg("^[あ-お]",$array['kana'])) $rows[$key]['gyo']='あ行'; if(mb_ereg("^[か-こ]",$array['kana'])) $rows[$key]['gyo']='か行'; if(mb_ereg("^[さ-そ]",$array['kana'])) $rows[$key]['gyo']='さ行'; if(mb_ereg("^[た-と]",$array['kana'])) $rows[$key]['gyo']='た行'; if(mb_ereg("^[な-の]",$array['kana'])) $rows[$key]['gyo']='な行'; if(mb_ereg("^[は-ほ]",$array['kana'])) $rows[$key]['gyo']='は行'; if(mb_ereg("^[ま-も]",$array['kana'])) $rows[$key]['gyo']='ま行'; if(mb_ereg("^[や-よ]",$array['kana'])) $rows[$key]['gyo']='や行'; if(mb_ereg("^[ら-ろ]",$array['kana'])) $rows[$key]['gyo']='ら行'; } $pregyo=""; foreach($rows as $key=>$array){ if($pregyo!=$array['gyo']) print($array['gyo']." \n"); print $array['name']." \n"; $pregyo=$array['gyo']; } ?>