ついでなので「タグ一覧」も追加する

December 18th, 2010

ついでなので、タグの一覧も表示できるようにしてみた。

やっぱり、リンク先はまだ無い...。


タグの配列は、カテゴリの配列と生成方法は似てるけど、「foreach文」が1つ多い。

正直なところ「foreach文」を3つも使うと、頭の回転が追いつかないダー。


<?php
// 使用頻度によってタグをランク付け出来るようにする
$tag_A = "tag1,tag2,tag3";
$tag_B = "tag1,tag3";
$arr_A = array("id"=>1, "tag"=>$tag_A, "val"=>"abc");
$arr_B = array("id"=>2, "tag"=>$tag_B, "val"=>"def");
$arr1 = array("a"=>$arr_A, "b"=>$arr_B); // この配列からタグを抜き取る

$arr_tag = array("null"=>NULL); //タグの格納場所
$flag1 = "off";
$flag2 = "off";

foreach ($arr1 as $key => $value) {
    $arr2 = explode(",", $value["tag"]); // タグだけの配列を生成
    foreach ($arr2 as $value2) {
        $flag1 = "off";
        $flag2 = "off";
        foreach ($arr_tag as $key3 => $value3) {
            if ($value2 == $key3) {
                $arr_tag[$key3] += 1; // 既存のタグなら値に1を足す
                $flag1 = "off";
                $flag2 = "on";
            } else if ($value3 == NULL) {
                $arr_tag = array($value2=>1); // 初回は配列を置き換える
                $flag1 = "off";
            } else {
                $flag1 = "on";
            }
        }
        if ($flag1 == "on" && $flag2 == "off") {
            $arr_tag[$value2] = 1; // 新規登録
        }
    }
}

// 生成した配列の構造(たぶん...)
$arr_tag = array("tag1"=>2, "tag2"=>1, "tag3"=>2);
?>
December 18th, 2010