私はphpタグしか見ていないので、DBは関係ないと思います。あなたが述べたように、それはオブジェクトのリストです。
DBがない場合にクエリを作成するという意味がよくわかりませんが、質問は少し不明です。
これは、あなたが話しているオブジェクトのクラスだと思います:
class SomeObject
{
private $id;
private $keywords = array();
public function getId()
{
return $this->id;
}
public function getKeywords()
{
return $this->keywords;
}
}
次に、これが解決策になります。
function filterObjectArray($objectArray, $search)
{
$resultIds = array();
$resultObjects = array();
foreach ($objectArray as $object)
{
foreach ($object->getKeywords() as $keyword)
{
if ($search == $keyword)
{
$resultIds[] = $object->getId();
$resultObjects[] = $object;
break;
}
}
}
return $resultObjects;
// or you could do return $resultIds; But i think returning the objects is a nicer solution.
}
次に、次のテーブルに関連する DB であると仮定します。
someobject
\ id
\ name
\ etc
keywords
\ id
\ keyword
\ someobjectid
それは単に次のようになります。
select
id
from someobject o
where
exists (select 1 from keywords k where k.keyword = 'thekeywordiamlookingfor' and k.objectid = someobject.id)