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ランキング
-
スカラーのベクトル微分
-
Perlで重複行を削除したい
-
C言語 最大値と最小値を求めて...
-
C言語の配列をPush(追加)する...
-
PHPのセレクトボックスの初期値...
-
MySQLのデータをPHPで多次元...
-
構造体を動的に確保&解放
-
【PHP】チェックボックスの必須...
-
pythonのnumpyでの繰り返しでの...
-
行列
-
一度に複数の値を取得できる乱...
-
sizeof
-
Pager::factory()の使い方がわ...
-
特定の文からメールアドレスの...
-
System.String.Splitでエラー
-
PHPとMySQLで100万件のデータを...
-
Texでの数式
-
MYSQLとPHPによって取得する多...
-
PHPでDBの複数行更新について
-
配列を指定した順序でソート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報