phpの配列比較に関して質問させていただきます。


現在、タグ付き掲示板を開発しております。
タグは閲覧者、作成者だれでも10個まで自由に追加できるようにしてあります。

気にいったタグがあった際、自分のお気に入りタグとして登録できる機能を作っています。

ここで、自分のお気に入りタグと掲示板にセットされているタグを比較して、自分のお気に入りにないものだけを取得できないか考えています。

1.お気に入りに登録したタグを配列にいれる
2.掲示板にセットされているタグを配列にいれる
3.配列を比較させ、お気に入りに登録されてないものだけを返す

1.2.に関してはできているのですが、3の比較と戻り値について調べたのですがよい資料が見つからず質問させていただきました。

参考となるコードを頂きたく、知見のある方どうかよろしくお願いいたします。

※当方のスペックを補足させていただきます。
・プログラミング経験は3カ月
・LAMP+jqueryで開発中

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2011/10/26 12:20:27
  • 終了:2011/10/27 11:54:25

回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4469ベストアンサー獲得回数18442011/10/26 12:34:12

ポイント50pt

http://www.php.net/manual/ja/function.array-diff.php

array_diff 関数で、どうですか?


$お気に入りに無いタグの配列 = array_diff($掲示板のタグ配列, $お気に入りのタグ配列);
id:kuso47

すみません、こちら解決できました。ありがとうございました。

2011/10/26 21:36:44
id:y-kawaz No.2

y-kawaz回答回数1420ベストアンサー獲得回数2252011/10/26 12:43:23

ポイント50pt

array_diffを使えば良いと思います。

<?php
$user_tags = array("あとで", "php", "perl", "プログラム");
$board_tags = array("php", "pear", "tips");
print_r( array_diff($board_tags, $user_tags) );

↓出力は以下の通り

Array
(
    [1] => pear
    [2] => tips
)
id:kuso47

すみません、こちら解決できました。ありがとうございました。

2011/10/26 21:36:56
  • id:windofjuly
    うぃんど 2011/10/26 15:30:06
    タグにどのようなものを収めると考えているのかにもよると思うのですが、
    タグは完全一致であれば新規登録しないという単純な条件?
     
    あいまいな部分(例えば先頭に http付きとhttp無しの違いなど)があるなら、
    互いにあいまい検索して「類似したものがあります」といったような・・・
    そんな一手間が必要になりそうな気がするのですが・・・
     
    単純比較であるならば(テーブルの構成にもよりますが)、
    例えば、お気に入りテーブルみたいなものがあって、
    ユニークキーにタグを含んでいれば、
    phpではなくSQLのほうでINSERT INTOしてしまうだけで、
    自動的かつ強制的に弾かせたりすることも可能ですし・・・
     
    実際にどのようなテーブル構成になっているのか判りませんが、
    どこで何をさせるということをもう少し考えたほうがいいのかもしれません
     
    以上、直接の回答が出揃った後で、なんですが、、、ちょっと気になったので・・・
  • id:kuso47
    コメントありがとうございます。ユーザーが投稿する内容なので一致は条件に入れていません。
    サッカー、というタグがすでにある場合、続けて「サッカー」と別のユーザーが登録することは可能性としてはありえますが、わかってて投稿されるのですからそれは致し方なし、と判断しています。

    テーブルの設計としては

    | thread_id | int(11) | NO | | NULL | |
    | tag_name | varchar(30) | NO | | NULL | |
    | created | datetime | NO | | NULL | |

    と単純にしてあります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません