1.phpでmysqlからデータを取得する(選択肢1-4に該当する都道府県と都道府県のカウント数)
2.各選択肢ごとにカウント数があればすでに存在しているxmlファイルの該当箇所を書き換える
以下phpのコード
//県データの配列
$pre_array = array([0] => "hokkaido",
[45] => "kagoshima", [46] => "okinawa");
//forで4つの選択肢ごとにsqlを実行し下記2つのデータ取得
for($i=1;$i<=4;$i++){
都道府県id・prefectures_id
都道府県のカウント数・count(prefectures_id) AS cnt
ここからどう書いたら良いのでしょうか?カウント数はvalue属性で書き換えたいのです。
以下xmlのコード ammap_data1.xml ~4.xmlまである。
<map>
<areas>
<area mc_name="aichi" title="Aichi"></area>
47都道府県分あります
</areas>
</map>
$pre_array[prefectures_id] で、mc_name属性の値がわかるのだから、それをキーにして置き換えたら?
SimpleXML でもいいと思いますが、単純なものなら正規表現による置換も可能です。
for ループ内で、こんな感じにすればよいと思います。
$fname = 'ammap_data'.$i.'1.xml'; $str = file_get_contents($fname); $str = preg_replace('/(<area mc_name="'.$pre_array[0].'" title=".+?")(\s*value="\d+")?>/','$1 value="'.$cnt.'">', $str); file_put_contents($fname, $str);
value属性として持たせたい理由は分かりませんが、本来なら
<area mc_name="aichi" title="Aichi"><count>○○</count></area>
なんじゃないかなぁ
ammapというmapchartのライブライリーのため、value属性になります。アドバイスありがとうございます。これから実際に書いてみます。