![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPで、ある配列の内容(ひらがな)を、読み(あ行~わ行)で分けて配列に代入したいのですがどのようにすればよいかわかりません。
どなたかご教示いただけませんでしょうか?
PHPのバージョンは5.2.5です。
具体的には以下のようにしたいです。
$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');
↑この配列から、↓このようにしたいです。
Array
(
[あ行] => Array
(
[0] => おれんじ
[1] => あか
)
[か行] => Array
(
[0] => きいろ
[1] => きみどり
[2] => くろ
)
[ま行] => Array
(
[0] => みどり
)
[さ行] => Array
(
[0] => しろ
)
[は行] => Array
(
[0] => ぴんく
[1] => びりじあん
)
)
No.2ベストアンサー
- 回答日時:
文字コードが UTF-8 なら下記のプログラムで上手く行きました
$result が仕分け後の配列になります
$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');
$kana = array(
"あ行" => "[あ-お]",
"か行" => "[か-こが-ご]",
"さ行" => "[さ-そざ-ぞ]",
"た行" => "[た-とだ-ど]",
"な行" => "[な-の]",
"は行" => "[は-ほば-ぼぱ-ぽ]",
"ま行" => "[ま-も]",
"や行" => "[や-よ]",
"ら行" => "[ら-ろ]",
"わ行" => "[わ-ん]",
"その他" => ".*"
);
$result = array();
foreach ($iro as $value) {
$match = false;
foreach ($kana as $index => $pattern) {
if (preg_match("/^" . $pattern . "/u", $value)) {
$result[$index][] = $value;
$match = true;
break;
}
}
}
print_r($result);
No.3
- 回答日時:
ためしにこんな感じで・・・
mb_internal_encodingで正しい文字コードを指定してください
<?PHP
mb_internal_encoding("EUC-JP");
function gyouwake($iro = NULL){
foreach((array) $iro as $val){
$str=mb_substr(mb_convert_kana(mb_substr($val,0,1),"hk"),0,1);
$replace_of = array('ア','イ','ウ','エ','オ',
'カ','キ','ク','ケ','コ',
'サ','シ','ス','セ','ソ',
'タ','チ','ツ','テ','ト',
'ナ','ニ','ヌ','ネ','ノ',
'ハ','ヒ','フ','ヘ','ホ',
'マ','ミ','ム','メ','モ',
'ヤ','ユ','ヨ',
'ラ','リ','ル','レ','ロ',
'ワ','ヲ','ン');
$replace_by = array('あ行','あ行','あ行','あ行','あ行',
'か行','か行','か行','か行','か行',
'さ行','さ行','さ行','さ行','さ行',
'た行','た行','た行','た行','た行',
'な行','な行','な行','な行','な行',
'は行','は行','は行','は行','は行',
'ま行','ま行','ま行','ま行','ま行',
'や行','や行','や行',
'ら行','ら行','ら行','ら行','ら行',
'わ行','わ行','わ行');
$gyo=in_array($str,$replace_of)?str_replace($replace_of,$replace_by,$str):"その他";
$array[$gyo][]=$val;
}
return $array;
}
$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん','ミズイロ','無色');
print "<pre>";
print_r(gyouwake($iro));
print "</pre>";
?>
No.1
- 回答日時:
以下のコードでどうでしょうか。
・基本的には、array('あ'=>'あ行', 'い'=>'あ行',…)という、50音の各文字から、分類したい「行名」への配列を作成
・分類したい各文字列から、最初の1文字を抜き出して、それから行名に変換、それを添え字とする配列要素に追加
といった処理を行っています。
---ここから---
function syllabary_grouping($data)
{
$syllabary_base = array(
'あいうえお',
'かきくけこがぎぐげご',
'さしすせそざじずぜぞ',
'たちつてとだぢづでど',
'なにぬねの',
'はひふへほぱぴぷぺぽばびぶべぼ',
'まみむめも',
'やゆよ',
'らりるれろ',
'わをん');
$syllabary = array();
foreach ($syllabary_base as $s) {
$len = mb_strlen($s);
$c = mb_substr($s,0,1);
for ($i = 0; $i < $len; $i++) {
$syllabary[mb_substr($s,$i,1)] = $c.'行';
}
}
print_r($syllabary);
$result = array();
foreach ($data as $element) {
$c = $syllabary[mb_substr($element, 0,1)];
$result[$c][] = $element;
}
return $result;
}
$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');
print_r(syllabary_grouping($iro));
---ここまで---
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのエラーの解消法について教...
-
phpのheader("Location:#pos")...
-
PHPについて。
-
PHPからCSVをアップロード後、m...
-
【PHP/MySQL】コード上で生成...
-
phpでcookieがうまく保存されない
-
PHPのセッション有効期限について
-
PHPで画像の渡しが上手く行きま...
-
クラス
-
PHPでの時間の足し算、割り算
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
C言語の配列をPush(追加)する...
-
php で1から100までの素数の表...
-
STLのvectorで作った配列をメン...
-
スカラーのベクトル微分
-
行列
-
Perlで重複行を削除したい
-
配列の要素(value)に、変数を...
-
特定の文からメールアドレスの...
-
forとかで連番の変数を一気に格...
-
C言語 最大値と最小値を求めて...
-
CArrayの要素としてCStringArra...
-
PHPでユニークIDを作る
-
fgetc関数について
-
読み(あ行~わ行)ごとに分け...
-
Pager::factory()の使い方がわ...
-
verilogで、配列の一部をタスク...
-
mallocで char *型の配列を確...
-
c言語 単位行列
-
連想配列で値が空だったら、要...
おすすめ情報