ユーザーがデータベースに保存されているメッセージをタグで検索できる入力フィールドを備えた簡単な検索関数を作成したいと思います。
問題は、関数がタグが一致するメッセージではなく、すべてのメッセージを返すことです。
これが私の試みです:
public function getMatches($tagsGiven) {
$mergedTagArray = array();
$messageToTag = array();
$messageRepo = $this->messageRepository->findAll(); // all messages from DB
$messageTagsArray = explode(',', $tagsGiven); // tags given by the user
foreach ($messageRepo as $oMessage) {
$messageTag = $oMessage->getMessageTags(); // get tags from all messages
$storeTagsUnseri = unserialize($messageTag); // unserialize tags given by the user
if (!in_array($messageTagsArray,$storeTagsUnseri)) { //if tags from user matches tags from DB messages
$messageToTag[] = $oMessage->getMessageText(); // get the message text from the DB message and store it in array
}
}
return $messageToTag; // return all message texts matching
}
}
どうもありがとうございます!
よろしくお願いします
編集
if (array_intersect($messageTagsArray,$storeTagsUnseri)) {}
それでうまくいきました。