下記のサイトの内容で悩んでいます。
リンク内容
<?php $array=Array( array ( "name" => "山田太郎" ,"name_kana" => "やまだたろう" ,"cnt" =>"4" ), array ( "name" => "岩鬼正美" ,"name_kana" => "いわきまさみ" ,"cnt" =>"1" ), array ( "name" => "殿馬一人" ,"name_kana" => "とのまかずと" ,"cnt" =>"2" ), array ( "name" => "里中智" ,"name_kana" => "さとなかさとる" ,"cnt" =>"9" ), array ( "name" => "微笑三太郎" ,"name_kana" => "ほほえみさんたろう" ,"cnt" =>"3" ), array ( "name" => "沢田京太" ,"name_kana" => "さわだきょうた" ,"cnt" =>"1" ), array ( "name" => "北 満男" ,"name_kana" => "きたみつお" ,"cnt" =>"1" ), array ( "name" => "徳川 家康" ,"name_kana" => "とくがわいえやす" ,"cnt" =>"4" ), array ( "name" => "山田サチ子" ,"name_kana" => "やまださちこ" ,"cnt" =>"1" ) ); //元データを あいうえお順にソート foreach ((array) $array as $key => $value) { $sort[$key] = $value['name_kana']; } array_multisort($sort,$array); $kana = array( "あ行" => "[あ-お]", "か行" => "[か-こが-ご]", "さ行" => "[さ-そざ-ぞ]", "た行" => "[た-とだ-ど]", "な行" => "[な-の]", "は行" => "[は-ほば-ぼぱ-ぽ]", "ま行" => "[ま-も]", "や行" => "[や-よ]", "ら行" => "[ら-ろ]", "わ行" => "[わ-ん]", "その他" => ".*" ); echo "<h1>元の配列</h1><br>\n"; //元の配列の内容確認 print_r($array); //処理ココから //結果格納用配列 $result 初期化 $result = array(); //人名データ配列を1行(中身は連想配列)でループ foreach ( $array as $line){ //あ行などのマッチ判定用変数を初期化 $match = FALSE; //人名データのname_kanaに対して、上記の$kana配列をループさせる foreach( $kana as $key => $pattern){ //name_kanaに $kana配列の[あ-お]などのパターンがマッチしたら if (preg_match("/^" . $pattern . "/u", $line['name_kana'])) { // 結果格納用配列$resultに、$kanaのキー名に名前・cntの合成文字列を代入 // アドバイスを元に下記を変更 $result[$key][] = array( 'name' => $line['name'], 'cnt' => $line['cnt'] ); //マッチ判定をTRUEに $match = TRUE; //$kanaのループを抜ける break; } } } echo "<h2>結果配列表示</h2><br>\n"; //結果格納配列の内容を表示 print_r($result); //求める処理 echo "<h2>求める文字列の表示部分です</h2>\n"; foreach($result as $kana => $namearray){ echo $kana."\n"; echo "<ul>\n"; foreach($namearray as $namecnt){ $name = preg_replace('/(\d*)/','',$namecnt ); // 変更 echo "<li><a href=\"siteurl/meta?key=".$name."\">".$namecnt."</a></li>\n"; echo "<li><a href=\"siteurl/meta?key=".$name."\">".$name." ".$cnt."</a></li>\n"; } echo "</ul>\n"; } ?>
nameとcntを一緒に表示されるようになっているのですが、これを分けて表示させる場合はどのようにすればいいのか分かりません。
理想は下記のようにしたい。
echo "<li><a href=\"siteurl/meta?key=".$name."\">".$name." <span class'hoge'>".cnt."</span></a></li>\n";
変更後、確認したら $name $cnt ともArrayになってしまう。
回答1件
あなたの回答
tips
プレビュー