次のような foreach ループでこれを行うことができると思います。
foreach ($haystack as $item)
if (isset($item->$needle_field) && $item->$needle_field == $needle)
return true;
}
しかし、ループなしでできるかどうか迷っていましたか?
何かのようなもの:
if(in_array($item->$needle_field == $needle,$haystack)
return true;